by lin@davoy.tech
Workflow Overview This workflow automates the process of creating and publishing engaging Facebook posts that teach Chinese words to a Thai-speaking audience. It integrates multiple AI models, APIs, and tools to generate content, create visuals, and publish posts seamlessly. Below is a detailed breakdown of the workflow: Who Is This Template For? Social Media Managers: Teams managing Facebook pages and looking for automated, engaging content creation. Content Creators: Professionals who want to streamline the process of generating educational and visually appealing posts. Language Enthusiasts: Individuals or organizations teaching languages (e.g., Chinese) to a Thai-speaking audience. What Problem Does This Workflow Solve? Creating engaging social media content manually can be time-consuming and inconsistent. This workflow solves that by: Automating the generation of educational posts in Thai with Chinese vocabulary. Creating visually appealing images tailored to the post's theme. Publishing posts directly to Facebook using the Pages API. What This Workflow Does Input Handling The workflow starts with an input word (e.g., received via chat or fetched from a Google Sheet). The input is split into two variables (word and input) to ensure data persistence throughout the workflow. Generate Text Content An AI model (OpenRouter Chat Model) generates a structured Facebook post in Thai, including: Engaging hook Core vocabulary (Chinese word, Pinyin, and Thai meaning) Real-world usage examples Pro-tip or fun fact Call-to-action for engagement Relevant hashtags Describe Image Concept Another AI model creates a brief description of the visual theme for the post. This description is used as input for generating an image. Generate Image The workflow uses Recraft.ai to generate an image based on the description. The image is styled consistently using predefined themes (e.g., digital illustration). Publish Post The generated text and image are published to Facebook using the Pages API. The post includes: The educational content as the caption. The generated image as the visual element. Setup Guide Pre-Requisites Access to the following APIs: OpenRouter.ai: For generating text content and image descriptions. Recraft.ai: For generating images. Facebook Graph API: For publishing posts. Step-by-Step Setup Configure Input Source: Replace the chat input node with your preferred source (e.g., Google Sheet, email, or manual input). Set Up OpenRouter.ai: Configure the credentials for OpenRouter.ai in the respective nodes (OpenRouter Chat Model and OpenRouter Chat Model1). Set Up Recraft.ai: Add your API key for Recraft.ai in the Generate Image (Recraft.ai) node. Configure Facebook Graph API: Set up the Facebook Graph API credentials with the required permissions (pages_manage_posts, pages_read_engagement, etc.). Update the page_id and graphApiVersion in the Facebook Graph API node. Test the Workflow: Run the workflow manually to verify that it generates content, creates images, publishes posts, and logs details correctly. How to Customize This Workflow to Your Needs Change Input Source: Replace the chat input with a Google Sheet, email, or database query. Modify Content Style: Adjust the AI prompts to suit your audience (e.g., professional tone, casual language). Use Different Image Styles: Experiment with other styles/themes in Recraft.ai for the generated images. Expand Use Cases: Adapt the workflow to other social media platforms (e.g., Instagram, LinkedIn) by modifying the API calls. Why Use This Template? Efficiency: Automates repetitive tasks like content creation and image generation. Consistency: Ensures posts follow a consistent format and style. Engagement: Creates visually appealing and interactive content to boost audience engagement. Scalability: Easily adaptable for different topics, languages, or platforms. Additional Resources
by Dr. Firas
💥 Viral TikTok Video Machine: Auto-Create Videos with Your AI Avatar 🎯 Who is this for? This workflow is for content creators, marketers, and agencies who want to use Veed.io’s AI avatar technology to produce short, engaging TikTok videos automatically. It’s ideal for creators who want to appear on camera without recording themselves, and for teams managing multiple brands who need to generate videos at scale. ⚙️ What problem this workflow solves Manually creating videos for TikTok can take hours — finding trends, writing scripts, recording, and editing. By combining Veed.io, ElevenLabs, and GPT-4, this workflow transforms a simple Telegram input into a ready-to-post TikTok video featuring your AI avatar powered by Veed.io — speaking naturally with your cloned voice. 🚀 What this workflow does This automation links Veed.io’s video-generation API with multiple AI tools: Analyzes TikTok trends via Perplexity AI Writes a 10-second viral script using GPT-4 Generates your voiceover via ElevenLabs Uses Veed.io (Fabric 1.0 via FAL.ai) to animate your avatar and sync the lips to the voice Creates an engaging caption + hashtags for TikTok virality Publishes the video automatically via Blotato TikTok API Logs all results to Google Sheets for tracking 🧩 Setup Telegram Bot Create your bot via @BotFather Configure it as the trigger for sending your photo and theme Connect Veed.io Create an account on Veed.io Get your FAL.ai API key (Veed Fabric 1.0 model) Use HTTPS image/audio URLs compatible with Veed Fabric Other APIs Add Perplexity, ElevenLabs, and Blotato TikTok keys Connect your Google Sheet for logging results 🛠️ How to customize this workflow Change your Avatar:* Upload a new image through Telegram, and *Veed.io** will generate a new talking version automatically. Modify the Script Style:** Adjust the GPT prompt for tone (educational, funny, storytelling). Adjust Voice Tone:* Tweak *ElevenLabs** stability and similarity settings. Expand Platforms:** Add Instagram, YouTube Shorts, or X (Twitter) posting nodes. Track Performance:** Customize your Google Sheet to measure your most successful Veed.io-based videos. 🧠 Expected Outcome In just a few seconds after sending your photo and theme, this workflow — powered by Veed.io — creates a fully automated TikTok video featuring your AI avatar with natural lip-sync and voice. The result is a continuous stream of viral short videos, made without cameras, editing, or effort. ✅ Import the JSON file in n8n, add your API keys (including Veed.io via FAL.ai), and start generating viral TikTok videos starring your AI avatar today! 🎥 Watch This Tutorial 📄 Documentation: Notion Guide Need help customizing? Contact me for consulting and support : Linkedin / Youtube
by Ketan Sharma
This n8n template demonstrates a complete AI-driven content pipeline for social media. It automatically generates captions and hashtags for new product images, collects human approval via Telegram, and publishes approved content to Twitter. It’s ideal for marketers, e-commerce businesses, and creators who want to speed up content creation while keeping human oversight. How it works Trigger: The workflow starts when a new file is added to a specific Google Drive folder. File Analysis: The image is processed to extract product information. AI Captioning: Gemini generates a caption and five relevant hashtags based on the product. Telegram Approval: The image, caption, and hashtags are sent to the user for approval. ✅ If approved → The content is posted to Twitter and a confirmation is sent back via Telegram. 🔄 If regenerate → Gemini creates a new caption and hashtags, and the approval loop repeats. ❌ If discard → A message is sent on Telegram and the workflow ends. Requirements Google Drive account Gemini API credentials for captioning and hashtags Telegram bot for approvals Twitter Developer Account with API credentials Customising this workflow Swap Google Drive with Dropbox, Notion, or Airtable as the content source. Extend publishing to LinkedIn, Instagram, or multiple platforms. Add multi-user approval flows in Telegram for team-based decisions.
by Trung Tran
🧾 Automated Trip Expense Claim Form With OpenAI Agent & Google Drive Watch the demo video below: > This workflow is designed for employees who need to submit expense claims for business trips. It automates the process of extracting data from receipts/invoices, logging it to a Google Sheet, and notifying the finance team via email. 👤 Who’s it for Ideal users: Employees submitting business trip expense claims HR or Admins reviewing travel-related reimbursements Finance teams responsible for processing claims ⚙️ How it works / What it does Employee submits a form with trip information (name, department, purpose, dates) and uploads one or more receipts/invoices (PDF). Uploaded files are saved to Google Drive for record-keeping. Each PDF is passed to a DocClaim Assistant agent, which uses GPT-4o and a structured parser to extract structured invoice data. The data is transformed and formatted into a standard JSON structure. Two parallel paths are followed: Invoice records are appended to a Google Sheet for centralized tracking. A detailed HTML email summarizing the trip and expenses is generated and sent to the finance department for claim processing. 🛠 How to set up Create a form to capture: Employee Name Department Trip Purpose From Date / To Date Receipt/Invoice File Upload (multiple PDFs) Configure file upload node to store files in a specific Google Drive folder. Set up DocClaim Agent using: GPT-4o or any LLM with document analysis capability Output parser for standardizing extracted receipt data (e.g., vendor, total, tax, date) Transform extracted data into a structured claim record (Code Node). Path 1: Save records to a Google Sheet (one row per expense). Path 2: Format the employee + claim data into a dynamic HTML email Use Send Email node to notify the finance department (e.g., finance@yourcompany.com) ✅ Requirements n8n running with access to: Google Drive API (for file uploads) Google Sheets API (for logging expenses) Email node (SMTP or Gmail for sending) GPT-4o or equivalent LLM with document parsing ability PDF invoices with clear formatting Shared Google Sheet for claim tracking Optional: Shared inbox for finance team 🧩 How to customize the workflow Add approval steps**: route the email to a manager before finance Attach original PDFs**: include uploaded files in the email as attachments Localize for other languages**: adapt form labels, email content, or parser prompts Sync to ERP or accounting system**: replace Google Sheet with QuickBooks, Xero, etc. Set limits/validation**: enforce max claim per trip or required fields before submission Auto-tag expenses**: add categories (e.g., travel, accommodation) for better reporting
by isaWOW
Description Submit one video topic using a simple form and GPT-4o-mini generates three platform-ready scripts in a single AI call. You get a structured 700–900 word YouTube long-form script, a fast-paced 100–130 word Instagram Reels script with visual cues, and a punchy 50–70 word TikTok script that ends with a comment question. All three scripts are logged to Google Sheets and delivered to your inbox in one email ready to record. Built for content creators, social media managers, and marketing agencies who want to repurpose one topic across three platforms without writing anything manually. What This Workflow Does Generates all three scripts in one API call** — YouTube, Instagram Reels, and TikTok are written simultaneously by a single GPT-4o-mini request so you get all three in seconds Writes platform-specific script formats** — YouTube gets a structured long-form script with intro, three main points, and conclusion; Reels gets visual cues in brackets; TikTok gets one punchy idea ending with a comment question Includes a hook for every platform** — Each script starts with a standalone attention-grabbing opening line under 20 words, ready to use as the first thing you say on camera Adds platform-appropriate CTAs** — YouTube asks to subscribe and comment, Instagram Reels asks to save and follow, TikTok asks to follow for more — automatically matched to each platform Attaches 8 hashtags per platform** — Each script includes 8 relevant hashtags with a mix of broad and niche tags specific to your industry Logs all three scripts to Google Sheets** — Appends one row per platform — three rows per submission — with hook, script, CTA, tags, and metadata Sends all three scripts in one Gmail** — All three platforms arrive in a single clearly sectioned plain-text email ready to copy and record Setup Requirements Tools Needed n8n instance (self-hosted or cloud) OpenAI account with GPT-4o-mini API access Google Sheets (one sheet with a tab named Video Scripts) Gmail account (the account you want to receive the scripts) Credentials Required OpenAI API key Google Sheets OAuth2 Gmail OAuth2 Estimated Setup Time: 10–15 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Fill in Config Values — Open node 2. Set — Config Values → replace all three placeholders: | Field | What to enter | |---|---| | PASTE_YOUR_GOOGLE_SHEET_ID_HERE | The ID from your Google Sheet URL (the string between /d/ and /edit) | | PASTE_YOUR_EMAIL_HERE | The email address where the three scripts should be sent | | PASTE_YOUR_NAME_HERE | Your name for the email greeting and sign-off | Connect OpenAI — Open node 4. 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 Video Scripts → add these 9 column headers in row 1: Date, Topic, Platform, Script Length, Hook, Script, CTA, Tags, Submitted By Connect Google Sheets — Open node 7. Google Sheets — Log Video Scripts → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access Connect Gmail — Open node 10. Gmail — Send Scripts Email → click the credential dropdown → add Gmail OAuth2 → sign in with the Gmail account that matches your email address → authorize access Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Multi-Platform Video Topic → open it in a browser to submit your first topic How It Works (Step by Step) Step 1 — Form: Multi-Platform Video Topic You open the form URL in a browser and fill in five fields: the video topic, target audience, your niche or industry, tone of voice (optional, defaults to "educational and engaging"), and your name. Submitting the form starts the workflow. Step 2 — Set: Config Values Your Google Sheet ID, recipient email, sender name, and all five form inputs are stored here. Today's date is auto-generated. Tone of voice defaults to "educational and engaging" if left blank on the form. Your niche is passed to the AI so all three scripts are personalized for your industry. Step 3 — AI Agent: Write 3 Platform Scripts GPT-4o-mini receives the video topic, target audience, niche, and tone. In one call it generates all three scripts simultaneously. The YouTube script is 700–900 words with intro, three main points, and conclusion. The Instagram Reels script is 100–130 words, fast-paced, with visual cues in brackets (e.g. [hold up phone]). The TikTok script is 50–70 words, covers one idea only, and ends with a question for viewers to answer in the comments. Every script includes a hook, full spoken script, platform-specific CTA, and 8 hashtags. Step 4 — OpenAI: GPT-4o-mini Model This is the language model powering the script generation. It runs at temperature 0.7 for natural, varied language and is capped at 2,500 tokens to comfortably fit all three scripts in one response. Step 5 — Parser: Structured Scripts Output This step enforces the exact nested schema GPT-4o-mini must return: a top-level object with three keys (youtube, reels, tiktok), each containing four fields (hook, script, cta, tags). All twelve fields are validated before any logging or emailing begins. Step 6 — Code: Split Scripts for Sheets The three-platform object is converted into three separate rows — one for YouTube, one for Instagram Reels, one for TikTok — so each can be written to Google Sheets as its own row. An isLastRow flag is set to true only on the TikTok row (the third). The full scripts object is attached to the TikTok row only, so the email builder has all three scripts available when it fires. Step 7 — Google Sheets: Log Video Scripts Each of the three rows is appended to your Video Scripts tab. All 9 columns are populated: date, topic, platform, script length label, hook, full script, CTA, tags as a space-separated hashtag string, and submitter name. Step 8 — IF: All Scripts Logged? After each row is written, this check reads the isLastRow flag. If true (YES path — the TikTok row was the last one), the workflow moves to build and send the Gmail. If false (NO path — the YouTube or Reels row was just logged), the workflow routes to 11. Set — More Scripts and the loop continues to the next row. Step 9 — Code: Build Email The full scripts object (carried on the TikTok row) is used to build one complete email. The body is organized into three clearly labeled sections — YOUTUBE, INSTAGRAM REELS, and TIKTOK — each with hook, script, CTA, and tags. The email subject includes the video topic and today's date. Step 10 — Gmail: Send Scripts Email The complete email is sent to your configured address with no attribution footer. All three platform scripts arrive in one clean message organized by section, ready to copy and record. Step 11 — Set: More Scripts This step handles non-final rows (YouTube and Reels) during the logging loop. It sets a brief in-progress message and the loop continues to the next row. Key Features ✅ All three scripts in one GPT call — One API request generates YouTube, Reels, and TikTok simultaneously — faster and cheaper than three separate calls ✅ Visual cues built into the Reels script — Instagram Reels includes on-screen action prompts in brackets so you know exactly what to do in front of the camera ✅ TikTok ends with a comment prompt — Every TikTok script closes with a specific question designed to drive comments — built into the prompt structure, not added manually ✅ Niche personalization across all three — Your industry is passed to GPT so the examples, language, and hashtags are relevant to your actual audience on every platform ✅ Gmail fires exactly once — The isLastRow flag ensures you receive one email with all three scripts after all three rows are logged — never one email per platform ✅ Structured output enforced — A nested schema parser validates all 12 fields across three platforms before any logging or emailing begins ✅ Permanent script library in Sheets — Every submission adds three rows to your Video Scripts tab — over time you build a searchable library of scripts organized by topic and platform ✅ Tone defaults to educational if blank — Leaving the Tone of Voice field empty on the form triggers a sensible default instead of failing the workflow Customisation Options Add a fourth platform — LinkedIn — In node 3. AI Agent — Write 3 Platform Scripts, edit the prompt to request a fourth platform object with a linkedin key — a 150–200 word professional text post — and update the schema parser in node 5 to require it. Change the YouTube script length — In node 3. AI Agent — Write 3 Platform Scripts, change the youtube script instruction from "700 to 900 words" to a longer or shorter target — and update maxTokens in node 4. OpenAI — GPT-4o-mini Model from 2500 to accommodate longer output. Send scripts to a Slack channel — After node 10. Gmail — Send Scripts Email, add a Slack step that posts the video topic, all three hooks, and a note that scripts are ready to a #content-team channel so your team sees new scripts without checking email. Log to separate sheet tabs per niche — In node 2. Set — Config Values, make sheetName dynamic using the niche value (e.g. Video Scripts — Legal Marketing) so different niche batches automatically sort into their own dedicated tabs. Add a Google Docs save for each script — After node 7. Google Sheets — Log Video Scripts, add a Google Docs create step that saves each platform's full script as its own document in a Drive folder — giving you editable individual files alongside the sheet log. 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 — Multi-Platform Video Topic after activating — URLs copied before activation will not work Make sure Video Topic, Target Audience, and Your Niche or Industry are all filled in — these three fields are required GPT not returning all three scripts: Confirm the API key is connected in node 4. OpenAI — GPT-4o-mini Model and your account has available credits Check the execution log of node 3. AI Agent — Write 3 Platform Scripts for the raw GPT response If the schema parser in node 5. Parser — Structured Scripts Output throws an error, one or more platforms have missing fields — re-run the submission to see if it is consistent, or increase maxTokens from 2500 to 3000 in node 4 Google Sheets not logging all three rows: Confirm the Google Sheets OAuth2 credential in node 7. Google Sheets — Log Video Scripts is connected and not expired — re-authorize if needed Check that PASTE_YOUR_GOOGLE_SHEET_ID_HERE in node 2. Set — Config Values is replaced with your actual sheet ID from the URL Confirm the tab is named Video Scripts exactly and all 9 column headers in row 1 match exactly: Date, Topic, Platform, Script Length, Hook, Script, CTA, Tags, Submitted By Gmail not arriving after all three rows are logged: Confirm the Gmail OAuth2 credential in node 10. Gmail — Send Scripts Email is connected and authorized Check that PASTE_YOUR_EMAIL_HERE in node 2. Set — Config Values is replaced with your actual email address Check the execution log of node 8. IF — All Scripts Logged? to confirm isLastRow reached true — if it never fires YES, the TikTok row may have failed to process correctly Check your spam or promotions folder on the first send Email arrives but scripts are missing or empty: The allScripts object is only carried on the TikTok (third) row — if the TikTok row failed to log, the email builder will receive a null object and throw an error Check node 6. Code — Split Scripts for Sheets execution log to confirm isLastRow was set correctly on the third item and allScripts is not null 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 Ruth Aju
Quick Overview This workflow generates a personalized freelance proposal from a Tally form submission, using OpenAI to extract text from screenshots and write the proposal, SerpAPI to pull proposal examples, Google Sheets to reference past projects, pdf.co to create a PDF, and Gmail to email it to the submitter. How it works Triggers when a new submission is received from a Tally form. Detects whether the submission contains a job screenshot and, if so, uses OpenAI (GPT-4o Vision) to extract the job description text; otherwise it uses the typed job description. Searches Google via SerpAPI for proposal examples based on the submitted job title and compiles relevant snippets. Combines the job title, job description, and example snippets into a single prompt payload for proposal writing. Uses an OpenAI agent that first looks up relevant past projects from Google Sheets and then generates a proposal and a short email body as HTML inside a JSON response. Converts the proposal HTML to a PDF using the pdf.co API, downloads the generated file, and emails it with Gmail to the address provided in the form. Setup Create a Tally form with job title, job description, optional job screenshot upload, and email fields, then set the Tally Form ID and replace all YOUR_*_FIELD_ID placeholders with your actual Tally field IDs. Add OpenAI credentials for both the image text extraction step and the proposal-generation agent, and update the OWNER BIO section in the agent prompt with your real profile details. Add a SerpAPI credential. Create a Google Sheets spreadsheet containing your past projects and connect a Google Sheets credential, then set the spreadsheet ID and sheet/tab used by the “get_relevant_projects” tool. Create a pdf.co account and add an HTTP Header Auth credential that sends your x-api-key header, and confirm the PDF conversion endpoint is reachable. Connect a Gmail OAuth2 credential and confirm the workflow can send emails to the recipient address captured from the Tally form.
by Incrementors
Description Submit your carousel topic, brand name, target audience, tone, and number of content slides via a simple form and the workflow generates a complete LinkedIn carousel PDF automatically. GPT-4o-mini returns a structured JSON array of slides — title slide, content slides with 3 bullet points each, and a CTA slide — which are assembled into a full branded HTML document with dark gradient backgrounds, slide number badges, and a swipe prompt, then converted into a square-format PDF at 1080×1080px per slide. The PDF is uploaded to Google Drive, logged to Google Sheets with the Drive link, and emailed to you with step-by-step LinkedIn posting instructions. Built for LinkedIn creators who want a fully formatted, ready-to-upload carousel PDF in minutes without designing slides manually. What This Workflow Does Generates structured slide content in pure JSON** — GPT-4o-mini produces a title slide, content slides with exactly 3 bullet points each, and a CTA slide as a validated JSON array — not free text Converts content to a branded square-format PDF** — Each slide is rendered as a 1080×1080px page with dark gradient backgrounds, slide number badges, and your brand name in the footer Adds a swipe prompt on the title slide** — A "Swipe →" label is automatically added to the title slide so viewers know to scroll through the carousel Uploads the finished PDF to Google Drive** — The PDF is saved with a structured filename including the topic and date — for example linkedin-carousel-seo-mistakes-2025-05-18.pdf Logs every carousel run to Google Sheets** — Topic, brand name, slide count, file name, Drive link, Drive file ID, PDF size, and generation timestamp are saved per run Sends a delivery email with posting instructions** — A styled HTML email arrives in your inbox with the Drive link and a 4-step guide on how to post the carousel on LinkedIn Setup Requirements Tools Needed n8n instance — self-hosted only (the PDF generation step requires installing an npm package on your n8n server — see step 1 below) OpenAI account with GPT-4o-mini API access Google Drive (one folder for carousel PDFs) Google Sheets (one sheet with a tab named Carousel Log) Gmail account Credentials Required OpenAI API key Google Drive OAuth2 Google Sheets OAuth2 Gmail OAuth2 > ⚠️ This workflow requires a self-hosted n8n instance. The PDF generation step uses html-pdf-node, an npm package that must be installed on your n8n server. This cannot be done on n8n Cloud. If you use n8n Cloud, the PDF step will fail. Estimated Setup Time: 25–30 minutes Step-by-Step Setup Install html-pdf-node on your n8n server — This is required before anything else. Run this command on your server: Standard install: npm install html-pdf-node Docker install: docker exec -it n8n npm install html-pdf-node After installing, restart your n8n instance for the package to be available Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Connect OpenAI — Open node OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Get your Google Drive folder ID — Open your target Google Drive folder in a browser → the folder ID is the string at the end of the URL after /folders/ Connect Google Drive — Open node 6. Google Drive — Upload PDF → click the credential dropdown → add Google Drive OAuth2 → authorize access → replace YOUR_GDRIVE_FOLDER_ID in the folder field with your actual folder ID Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Carousel Log → add these 9 column headers in row 1: Date, Topic, Brand Name, Slide Count, File Name, Drive Link, Drive File ID, PDF Size (bytes), Generated 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 7. Google Sheets — Log Carousel → replace YOUR_GOOGLE_SHEET_ID with your actual Sheet ID → click the credential dropdown → add Google Sheets OAuth2 → authorize access Set your email address — Open node 8. Gmail — Email PDF to You → replace YOUR_EMAIL_ADDRESS in the Send To field with your actual email address Connect Gmail — Open the same node 8. Gmail — Email PDF to You → click the credential dropdown → add Gmail OAuth2 → complete the Google authorization flow Customize your brand color (optional) — Open node 4. Code — Build HTML Slides → find the BRAND SETTINGS section near the top of the code → replace #0A66C2 in BRAND_COLOR with your own hex color code Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Carousel Topic + Details → open it in a browser to submit your first carousel How It Works (Step by Step) Step 1 — Form: Carousel Topic + Details You open the form URL and fill in five fields: the carousel topic (e.g. "5 SEO mistakes beginners make"), your name or brand, the target audience, the tone (e.g. Professional, Motivational, Educational), and the number of content slides you want (recommended: 4 to 7). Submitting the form starts the full pipeline. Step 2 — AI Agent: Generate Slide Content GPT-4o-mini receives the topic, audience, tone, and slide count. The system prompt instructs it to return ONLY a valid JSON array — no text before or after, no markdown backticks. The array contains one title slide object, the requested number of content slide objects (each with a headline, one emoji, an empty subtitle, and exactly 3 bullet points), and one CTA slide object with a follow prompt and a comment-baiting question. Each slide has a type field set to "title", "content", or "cta". Step 3 — Code: Parse Slides JSON The AI output is cleaned of any accidental markdown code fences and parsed as a JSON array. If parsing fails, the step throws a clear error showing the first 300 characters of the output for debugging. If the array is empty or missing, another error is thrown. The topic, brand name, audience, and tone from the form are also extracted and packaged alongside the slides array. Step 4 — Code: Build HTML Slides Each slide in the array is converted to a full-height HTML div at 1080×1080px with a dark gradient background using your brand color. Content slides get a numbered badge in the top-right corner. The title slide gets a "Swipe →" label at the bottom-right. All slides get a brand name label at the bottom-left. Content slides render the 3 bullet points as a list with circular checkmark icons. All styles are inline so the HTML is fully self-contained. A complete HTML document wrapping all slide divs is returned alongside a structured filename built from the topic and today's date. Step 5 — Code: Generate PDF The html-pdf-node npm package is called with the full HTML string. The PDF is generated at 1080×1080px per page with no margins and printing backgrounds enabled. The resulting PDF buffer is converted to base64 and returned as binary data alongside the filename, slide count, topic, brand name, and PDF file size in bytes. Step 6 — Google Drive: Upload PDF The PDF binary is uploaded to your specified Google Drive folder using the structured filename from step 4. Google Drive returns the file's ID and other metadata. Step 7 — Google Sheets: Log Carousel One row is appended to your Carousel Log tab with all 9 columns. The Drive Link is constructed directly from the file ID as https://drive.google.com/file/d/FILE_ID/view so every row has a clickable link immediately. Step 8 — Gmail: Email PDF to You A styled HTML email is sent to your address with the carousel topic, slide count, filename, and a clickable "Open in Google Drive" link. A blue callout box at the bottom of the email shows the 4-step LinkedIn posting process: download the PDF from Drive, go to LinkedIn, create a post, add the PDF as a document, add your caption, and post. Key Features ✅ Pure JSON output from GPT — GPT is instructed to return only a JSON array — making the output directly parseable without regex extraction and producing consistent slide structures every time ✅ Slide count badge auto-numbered — Content slides automatically get a numbered circle badge in the top-right corner showing which slide number it is — no manual numbering needed ✅ Swipe prompt on title slide — The first slide automatically gets a "Swipe →" label so LinkedIn viewers know to scroll through — this is a standard carousel best practice ✅ Brand color applied globally — Change one value in the code and the entire PDF reflects your brand color across all backgrounds and gradients ✅ Filename includes topic and date — Files are named linkedin-carousel-[topic]-[date].pdf so your Drive folder stays organized and searchable ✅ PDF size logged in bytes — The sheet log records the exact file size so you can monitor output consistency and catch any generation issues ✅ LinkedIn posting instructions in every email — The delivery email includes a 4-step posting guide so anyone on your team can upload the carousel without knowing how LinkedIn document posts work Customisation Options Change the brand color — In node 4. Code — Build HTML Slides, find const BRAND_COLOR = '#0A66C2' in the BRAND SETTINGS section at the top and replace the hex code with your own brand color — the change applies to all slide backgrounds and gradients. Change the slide layout font — In the same BRAND SETTINGS section of node 4. Code — Build HTML Slides, change const FONT = 'Arial, sans-serif' to any web-safe font — for example 'Georgia, serif' for a more editorial look or 'Verdana, sans-serif' for a cleaner style. Add your topic to the topic emoji map — In node 10. Code — Build HTML Email (note: this is in the News Digest workflow — for the carousel, the emoji is generated by GPT per slide) — if you want to control which emoji appears on each slide type, add instructions to the GPT system prompt in node 2. AI Agent — Generate Slide Content. Send to a Slack channel when a carousel is ready — After node 8. Gmail — Email PDF to You, add a Slack step that posts the carousel topic, slide count, and a direct Drive link to a #content-team channel so your team is notified without checking email. Increase the slide bullet point count — In the system prompt of node 2. AI Agent — Generate Slide Content, change Exactly 3 bullet points per content slide to a different number — for example 4 or 5 — and update the bullet point rendering in node 4. Code — Build HTML Slides accordingly. Troubleshooting PDF generation failing with a module not found error: Confirm html-pdf-node was installed on the same n8n server instance running this workflow — run npm install html-pdf-node again if unsure For Docker: run docker exec -it n8n npm install html-pdf-node and restart the container — the package must be installed inside the container, not on the host machine Check the exact error message in the execution log of node 5. Code — Generate PDF — a "Cannot find module" error confirms the package is not installed; any other error may point to a specific HTML rendering issue GPT returning a JSON parse error: Check the execution log of node 3. Code — Parse Slides JSON — it shows the first 300 characters of the raw GPT output, which helps identify whether GPT added text outside the JSON array If GPT added markdown fences despite instructions, the parse step strips them — but if it added a preamble sentence, parsing will still fail; try rerunning the form Confirm the OpenAI API key in node OpenAI — GPT-4o-mini Model is valid and your account has credits 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 — Carousel Topic + Details after activating Make sure all five fields are filled in — all are required Google Drive upload failing: Confirm the Google Drive OAuth2 credential in node 6. Google Drive — Upload PDF is connected and not expired — re-authorize if needed Confirm YOUR_GDRIVE_FOLDER_ID is replaced with just the folder ID from the URL — not the full Drive URL If the PDF generation step returned an empty or failed binary, the upload will also fail — check the execution log of step 5 first Google Sheets not logging or Gmail not sending: Confirm YOUR_GOOGLE_SHEET_ID in node 7. Google Sheets — Log Carousel is replaced with your actual Sheet ID and the tab is named Carousel Log exactly Confirm YOUR_EMAIL_ADDRESS in node 8. Gmail — Email PDF to You is replaced with a valid email address and the Gmail OAuth2 credential is connected Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://www.incrementors.com/
by ayo.o
Quick overview This workflow accepts invoice files via a Telegram bot, extracts text with OCR.space, uses OpenAI to turn the OCR output into structured invoice fields, appends the data to Google Sheets, archives the original file in Google Drive, and sends a confirmation message back to Telegram. How it works Triggers when a user sends an invoice image (JPG/PNG) or PDF to your Telegram bot. Downloads the file from Telegram, detects its MIME type, and continues only for JPG, PNG, or PDF invoices. Sends the invoice file to OCR.space to extract the raw text content. Uses OpenAI to convert the OCR text into structured invoice JSON and validates the output against a predefined schema. Formats item lines into newline-separated fields and appends the invoice details to a Google Sheets worksheet. Uploads the original invoice file to a specified Google Drive folder and generates a short confirmation message with key details and your database link. Sends the confirmation message back to the same Telegram chat. Setup Create a Telegram bot, add the Telegram credentials in n8n, and start a chat with the bot so it can receive messages. Add an OCR.space API key using HTTP Header Auth credentials and connect it to the OCR request step. Add OpenAI API credentials for the model used to extract structured invoice data and write the confirmation message. Connect Google Sheets and Google Drive OAuth credentials, then set the Google Sheet ID and Drive folder ID in the workflow variables. Create a Google Sheet (for example, “Sheet1”) with the required column headers used by the append step and update the sheet name if different. Set the invoice database link in the workflow variables so it can be included in the Telegram confirmation. Requirements Telegram Bot (created via BotFather) OpenAI API key OCR.space API key (free tier available at ocr.space) Google Sheets OAuth2 credentials Google Drive OAuth2 credentials
by Rajeet Nair
Overview This workflow implements a privacy-preserving AI document processing pipeline that detects, masks, and securely manages Personally Identifiable Information (PII) before any AI processing occurs. Organizations often need to analyze documents such as invoices, forms, contracts, or reports using AI. However, sending documents containing personal data directly to AI models can create serious privacy, compliance, and security risks. This workflow solves that problem by automatically detecting sensitive information, replacing it with secure tokens, and storing the original values in a protected vault database. Only the masked version of the document is sent to the AI model for analysis. If required, a controlled PII re-injection mechanism can restore original values after processing. The workflow also records all operations in an audit log, making it suitable for environments requiring strong compliance such as GDPR, financial services, healthcare, or enterprise document processing systems. How It Works 1. Document Upload A webhook receives a document (typically a PDF) and triggers the workflow. 2. OCR Text Extraction The OCR Extract node extracts the text content from the document so it can be analyzed for sensitive information. 3. PII Detection Multiple detectors analyze the text to identify different types of sensitive data: Email addresses (regex detection) Phone numbers (multi-pattern detection) Identification numbers such as PAN, SSN, or bank accounts Physical addresses detected using an AI model Each detection includes: detected value location in the text confidence score 4. Detection Consolidation All detected PII results are merged into a single dataset. The workflow resolves overlapping detections and removes duplicates to produce a clean list of sensitive values. 5. Tokenization and Secure Vault Storage Each detected PII value is replaced with a secure token, for example: <<EMAIL_7F3A>> <<PHONE_A12B>> The original values are securely stored in a Postgres vault table. This ensures sensitive data is never exposed to AI models. 6. Masked AI Processing The masked document is sent to an AI model for structured analysis. Possible AI tasks include: Document classification Data extraction Document summarization Entity extraction Since all sensitive data has been tokenized, the AI processes the document without seeing any real personal data. 7. Controlled PII Re-Injection After AI processing, the workflow can optionally restore original values from the vault. The Re-Injection Controller determines which fields are allowed to restore PII based on defined permissions. 8. Compliance Audit Logging All events are recorded in an audit table, including: PII detection token generation AI processing PII restoration This provides traceability and compliance reporting. Setup Instructions 1. Configure Postgres Database Create two tables in your database. PII Vault Table Example structure: token original_value type document_id created_at This table securely stores original PII values mapped to tokens. Audit Log Table Example structure: document_id pii_types_detected token_count ai_access_confirmed re_injection_events timestamp actor This table records workflow activity for compliance tracking. 2. Configure AI Model Credentials This workflow supports multiple AI models: Anthropic Claude (used for AI document processing) Ollama local models (used for address detection) Configure credentials in n8n before running the workflow. 3. Configure Webhook Trigger The workflow starts when a document is sent to the webhook: POST /webhook/gdpr-document-upload Upload a PDF file to this endpoint to trigger processing. 4. Configure Alert Notifications (Optional) Replace the placeholder alert webhook URL with your monitoring or alerting system. Example use cases: Slack alert monitoring system incident notification Alerts are triggered if masking fails. Use Cases This workflow is useful for many privacy-sensitive automation scenarios. GDPR-Compliant Document Processing Safely process documents containing personal data without exposing PII to AI models. AI-Powered Document Analysis Use AI to summarize or extract data from documents while maintaining privacy. Enterprise Data Redaction Pipelines Automatically detect and tokenize sensitive data before sending documents to downstream systems. Financial Document Processing Process invoices, contracts, and financial reports securely. Healthcare Document Automation Analyze patient documents while ensuring sensitive data is protected. Requirements To run this workflow you need: n8n** Postgres database** Anthropic Claude API access** Ollama (optional for local AI address detection)** Webhook endpoint for document uploads** Optional integrations: Monitoring or alert system Compliance audit database Key Features Automated PII detection and tokenization AI-safe document processing** Secure vault storage for sensitive data Controlled PII restoration Full audit logging Works with multiple AI models Designed for GDPR and enterprise compliance Summary This workflow creates a secure bridge between sensitive documents and AI systems. By automatically detecting, masking, and securely storing personal data, it enables organizations to safely apply AI to document processing tasks without exposing sensitive information. The combination of tokenization, secure vault storage, controlled re-injection, and audit logging makes this workflow suitable for privacy-sensitive industries and enterprise automation pipelines.
by Kev
⚠️ Important: This workflow uses the Autype community node and requires a self-hosted n8n instance. Send an email with a document request and optional PDF attachments. The AI assistant can summarize documents, compare multiple PDFs, draft new content, or create documents from scratch with internet research — all output as professionally branded PDFs using Autype. The finished document is delivered back to the sender via email. Who is this for? Consultants, analysts, project managers, and teams who need on-demand document generation. Send an email and get a branded PDF back — whether it's a summary, comparison, draft, or a freshly researched document. Concrete example: Attach 3 PDF proposals and write "Compare these proposals and recommend the best option" — each PDF is OCR'd via Autype Lens, the AI assistant produces a structured comparison with tables, and you receive a branded PDF within minutes. This also works as an additional skill for an AI agent. Instead of an email trigger, connect the workflow to a webhook or chat trigger so an agent can call it when a user asks "create a summary of these documents." What this workflow does On each incoming email, the workflow: Extracts the email subject + body as the document request, and detects PDF attachments Processes each attached PDF sequentially: uploads to Autype, extracts text via Lens OCR Combines all OCR results into a single context Downloads the Autype Extended Markdown syntax reference so the AI knows the output format Passes the request text + all PDF content to an AI Document Assistant with Firecrawl and SerpAPI as research tools The assistant determines the task type (summarize, compare, draft, or create from scratch) and produces the document in Autype Extended Markdown Autype renders the markdown to a branded PDF with company styling (fonts, colors, heading styles, tables, header with logo, footer with page numbers) The PDF is delivered back to the original sender via email Output structure How it works New Email Received — An IMAP Email Trigger monitors your inbox for incoming document requests. The email subject and body become the request text; PDF attachments are automatically detected. Set Company Config — A Set node defines your company name, logo URL, and brand color. Edit these values once. Extract & Split PDFs — A Code node extracts the sender email, combines subject + body as request text, and detects PDF attachments. Each PDF is split into a separate item for loop processing. If no PDFs are attached, a single item with just the text is output. Has PDFs? — An IF node routes the flow: emails with PDF attachments enter the processing loop, text-only emails skip directly to the AI Assistant. Loop Over PDFs — A Split In Batches node processes each PDF sequentially (one at a time to avoid API rate limits). Upload PDF to Autype — Each PDF is uploaded to Autype via the community node (resource: file). Autype Lens OCR — An HTTP Request node triggers Autype Lens OCR on the uploaded file with outputFormat: "md". This uses Generic Auth Type → Header Auth with X-API-Key set to your Autype API key. Cost: 4 credits per page. A dedicated community node for Lens is planned. Wait for OCR → Poll OCR Status — Waits 8 seconds, then polls the job status via HTTP Request (same Header Auth credential). The loop continues to the next PDF after each OCR completes. Extract OCR Text — Extracts the markdown text from each OCR result and stores it with the original filename. Combine All OCR Results — After the loop completes, collects all OCR texts and combines them into a single context string with labeled sections per PDF. Prepare Text Only — For emails without PDFs, passes just the request text forward. Download Markdown Syntax — Fetches the Autype Extended Markdown syntax reference so the AI knows the output format. Merge Context — Combines the request text, all OCR content, and the markdown syntax reference into a single item for the AI Agent. AI Document Assistant — An n8n AI Agent (OpenRouter) with two tools: Firecrawl Scrape — Scrapes specific URLs to extract page content as markdown. SerpAPI — Web search for current information, statistics, and facts. The assistant determines the task type (summarize, compare, draft, or create from scratch). The system prompt limits tool usage to max 5 calls and prioritizes attached PDF content. Prepare Render Payload — Cleans the AI output (strips code fences), generates a filename, and prepares branding variables. Render Branded PDF — Autype Render from Markdown generates the PDF with a full defaults JSON for company styling: Roboto font, heading colors from brand color, styled tables with colored headers, header with company logo, and footer with page numbers. See the defaults schema for all options. Send Report via Email — SMTP sends the PDF as an attachment back to the original email sender. Setup Install the Autype community node (n8n-nodes-autype) via Settings > Community Nodes. Create an Autype API credential with your API key from app.autype.com. See API Keys in Settings. Create a Header Auth credential for the Lens OCR HTTP Request nodes: Go to Credentials > New > Header Auth Name: X-API-Key Value: your Autype API key (same key as step 2) Assign this credential to the "Autype Lens OCR" and "Poll OCR Status" nodes. Create an OpenRouter API credential (or replace the chat model with OpenAI/Anthropic). Create an IMAP credential for the email inbox to monitor. Create an SMTP credential for sending emails. Get a Firecrawl API key from firecrawl.dev and create a Firecrawl credential. Get a SerpAPI key from serpapi.com and create a SerpAPI credential. Import this workflow and assign your credentials to each node. Edit the Set Company Config node: companyName — Your company name (appears in header/footer) companyLogoUrl — URL to your company logo (PNG/JPEG, publicly accessible) brandColor — Hex color for headings and table headers (e.g. #1a5276) Update the Send Report via Email node with your sender email address. Activate the workflow — any new email to the monitored inbox triggers document generation. > Note: This is a community node. It is not maintained by the n8n team. You need a self-hosted n8n instance to use community nodes. Requirements Self-hosted n8n instance (community nodes are not available on n8n Cloud) Autype account with API key (Lens OCR costs 4 credits/page, Render from Markdown costs 1 credit) n8n-nodes-autype community node installed OpenRouter API key (or OpenAI/Anthropic — configurable chat model) IMAP credentials for the monitored inbox SMTP credentials for sending emails Firecrawl API key (free tier: 500 pages/month) SerpAPI key (serpapi.com) How to customize Change AI model:** Replace the OpenRouter Chat Model sub-node with OpenAI, Anthropic Claude, Google Gemini, or any LangChain-compatible chat model. Add more research tools:** Add additional tool nodes for specialized APIs — Google Scholar, SEC filings, PubMed, or internal knowledge bases. Customize styling:** Edit the defaults JSON in the Render Branded PDF node to change fonts, colors, heading styles, table designs, header/footer content, and spacing. See the defaults schema for all available options. Replace email trigger:** Swap the IMAP Email Trigger with a Form Trigger, Webhook, or Chat Trigger to accept input from different sources. Add watermark:** Insert an Autype Watermark step after rendering to stamp "DRAFT" or "CONFIDENTIAL" on every page. Save to cloud storage:** Add a Google Drive, S3, or SharePoint upload step after rendering (before or instead of SMTP). Adjust OCR wait time:** For large PDFs (10+ pages), increase the Wait node from 8 to 15-20 seconds, or add a retry loop that polls until status is COMPLETED. Use Autype community node for Lens:** Once the Autype community node adds Lens OCR support, replace the HTTP Request OCR/poll chain with a single Autype node. Change output format:** Switch from Render from Markdown to Render from JSON for a better manipulation experience
by Dr. Firas
💥 Clone Video Ads Factory using NanoBanana, Kling and Publish with Blotato 📄 Documentation: Notion Guide Who is this for? This workflow is built for marketers, growth hackers, agencies, content creators, and automation builders who want to industrialize video ad production. Perfect for anyone running paid ads, social media campaigns, UGC-style content, dropshipping creatives, AI ad testing, or scalable content factories. What problem is this workflow solving? / Use case Creating high-performing video ads is: Slow Manual Expensive Hard to scale Hard to test in volume This workflow solves: ❌ Manual editing ❌ Manual prompt writing ❌ Manual scene creation ❌ Manual video assembly ❌ Manual audio integration ❌ Manual publishing It turns one input video + prompt into a fully automated ad production pipeline. What this workflow does This automation system acts as a full AI video ads factory: Step-by-step pipeline: Video Analysis Breaks down the source video into cinematic scenes Extracts structure, rhythm, composition, pacing, and visual logic Prompt Engineering Generates structured prompts for: Images Videos Music Captions Global script Scene structure Image Generation Uses NanoBanana to generate consistent AI images per scene Keeps visual identity across scenes Video Generation Uses Kling to generate cinematic video clips Scene-based video creation Video Merging Automatically merges all generated scenes into one final video Music Generation Generates a full song from prompt (AI music model) Audio + Video Merge Merges generated music with the final video Publishing Automatically publishes content using Blotato Creates posts and media assets ➡️ Result: Fully automated AI video ad production system Setup Required accounts: Airtable fal.ai AtlasCloud** Blotato** Initial configuration: Create Airtable base Add required fields: Original Video Avatar Image Product Image Status Prompts Scenes Music File Final Video Add API keys in the Setup nodes: AtlasCloud fal.ai Airtable Blotato Expected outcome You get a fully automated AI content factory that can: Clone ad styles Scale ad production Test creatives at scale Generate UGC-style ads Build content farms Automate marketing pipelines Create AI ad studios Run continuous ad experiments Typical use cases AI UGC ad factories Dropshipping ad automation SaaS promo videos Influencer content cloning Brand video scaling Marketing automation Ad testing labs Growth hacking pipelines AI content studios 👋 Need help or want to customize this? 📩 Contact: LinkedIn 📺 YouTube: @DRFIRASS 🚀 Workshops: Mes Ateliers n8n Need help customizing? Contact me for consulting and support : Linkedin / Youtube / 🚀 Mes Ateliers n8n
by Miquel Colomer
Do you want to create a website screenshot without browser extensions? This workflow creates screenshots of any website using the uProc Get Screenshot by URL tool and sends an email with the screenshots. You need to add your credentials (Email and API Key - real -) located at Integration section to n8n. Node "Create Web + Email Item" can be replaced by any other supported service returning Website and Email values, like Google Sheets, Mailchimp, MySQL, or Typeform. Every "uProc" node returns an image URL of the captured website. This generated URL will remain only 24 hours in our server. You can set up the uProc node with several parameters: width: you can choose one of the predefined values to generate the screenshot, or you can set up a custom width you want. full-page: the tool will return a screenshot of the website from top to bottom with the defined width. In our workflow, we generate two screenshots: 1) One screenshot of 640 pixels width. 2) One full-page screenshot of 640 pixels width. Screenshots are downloaded by "Get File" nodes and saved to the screenshots folder in Dropbox. Finally, we use the Amazon SES node to send an HTML email with both screenshots to the specified email. We will receive the next email: