by Paul Roussel
Automated workflow to remove video backgrounds and composite foreground video on static image backgrounds. Perfect for creating branded content, professional presentations, and consistent visual branding across your videos. How it works • Upload inputs: Provide foreground video URL and background image URL (both must be publicly accessible) • Remove background: API automatically removes video background with AI-powered segmentation • Composite on image: Video is centered on custom image background with aspect ratio preserved • Save to Drive: Final composed video is automatically uploaded to Google Drive with shareable link Set up steps ⏱️ Total setup time: ~7 minutes • Get VideoBGRemover API Key (~2 min): Visit https://videobgremover.com/api-management, sign up, and copy your API key • Add API key to n8n (~2 min): Go to Settings → Variables, add VIDEOBGREMOVER_KEY with your API key as value. Find the api key -> https://videobgremover.com/n8n • Connect Google Drive (~2 min): Click "Upload to Google Drive" node, click "Connect", and authorize n8n • Test workflow (~1 min): Use manual trigger with sample URLs provided in the "Sample URLs (Edit Here)" node Use cases: Branded content with company backgrounds and logos Product demos with custom imagery or brand colors AI avatars on professional office/studio backgrounds Social media content requiring consistent visual branding Profile videos with custom scenes or patterns Presentation videos with company branding Pricing: VideoBGRemover API charges $0.50-$2.00 per minute of video processed. Free trial credits available. Triggers: Webhook (for automation) or Manual (for testing) Processing time: Typically 3-5 minutes per minute of video
by Bilel Aroua
Sora 2 Video Generator - No Watermark (Minimal Setup) This n8n workflow enables you to generate professional AI videos using OpenAI's Sora 2 without watermarks. Create videos from text descriptions or animate your images with a simple web form interface - ready to use in just 5 minutes! Generate cinematic AI videos for social media, marketing campaigns, product demos, or creative projects. The workflow handles both text-to-video and image-to-video generation with automatic status polling until your video is ready. Good to know: • Kie.AI charges per video generation. Check their pricing page for current rates • Videos typically take 30-60 seconds for standard quality, 60-120 seconds for HD • The workflow automatically retries status checks every 30 seconds until completion • No watermarks on output videos How it works • Users submit video requests via a beautiful web form with description, aspect ratio, and quality options • The workflow detects if an image was uploaded and routes to either text-to-video or image-to-video • For image uploads, the file is automatically uploaded to ImgBB to generate a public URL • The request is sent to Sora 2 API via Kie.AI with your specifications (prompt, quality, aspect ratio) • The workflow waits 30 seconds, then checks if video generation is complete • If not ready, it automatically loops back and checks again every 30 seconds • Once complete, the video is downloaded and optionally sent via Telegram notification • Clean, watermark-free MP4 video output ready for use Set up steps Step 1: Get Kie.AI API Key • Sign up at kie.ai and navigate to your dashboard • Go to API Keys section and generate a new key • Copy the API key for the next step Step 2: Configure n8n Credentials • In n8n, go to Credentials → New Credential • Select "HTTP Header Auth" • Name: Kie Ai(Veo and more) (exact name required) • Header Name: Authorization • Header Value: Bearer YOUR_API_KEY • Save the credential Step 3: ImgBB Setup (for Image-to-Video) • Get a free API key from api.imgbb.com • Open the "Upload to ImgBB" node in the workflow • Replace the YOUR_ImgBB_API_KEY parameter with your ImgBB API key Step 4: (Optional) Telegram Notifications • Create a bot with @BotFather on Telegram • Get your Chat ID from @get_id_bot • Update YOUR_CHAT_ID in both Telegram nodes • Or delete Telegram nodes entirely if not needed Requirements • Kie.AI account with API access for Sora 2 • ImgBB account for image hosting (free tier available) • (Optional) Telegram bot for video delivery notifications Customising this workflow • Adjust wait times in the Wait nodes if generation takes longer in your region • Add email notifications instead of/in addition to Telegram • Modify the form to collect additional metadata (user info, project names, etc.) • Add error handling nodes for production deployments • Connect to cloud storage (Google Drive, Dropbox) instead of Telegram for video delivery • Integrate with your existing CMS or content management system For assistance and support: contact@bilsimaging.com
by Harshil Agrawal
This workflow allows you to create an invoice with the information received via Typeform submission. Typeform node: This node triggers the workflow. Whenever the form is submitted, the node triggers the workflow. We will use the information received in this node to generate the invoice. APITemplate.io node: This node generates the invoice using the information from the previous node.
by Konrad Roziewski
This workflow fetches the complete content of a specific Notion page and converts all its blocks into a single HTML string compatible with the WordPress Gutenberg block editor. It's designed to be used as a sub-workflow. You can call it from a parent workflow (e.g., "when a Notion page is updated") by passing it a notion_url. It returns a single item containing the complete, ready-to-use HTML for a WordPress post body. Key Features Full Page Conversion: Fetches all blocks from a page, including nested blocks (like content inside columns or toggles). Rich Text Support: Correctly parses and converts rich text annotations, including bold, italic, \<u\>underline\</u\>, \<s\>strikethrough\</s\>, and links. Gutenberg-Compatible: Wraps content in the appropriate Gutenberg HTML comments (e.g., , , \\) so WordPress recognizes them as blocks. Handles Complex Layouts: Includes specific logic to correctly rebuild Notion's column and column\_list blocks into a responsive Gutenberg-friendly format. Supports Various Blocks: Converts paragraphs, all heading types (H1, H2, H3), bulleted and numbered lists, images, videos (YouTube/Vimeo), embeds, code blocks, and dividers. How It Works Input: The workflow is triggered by an Execute Workflow node, which expects a notion_url in the input data. (A manual trigger with a sample URL is included for testing). Fetch Data: It first gets the Notion page specified by the URL and then uses a second Notion node to fetch all child blocks recursively (fetchNestedBlocks: true). Process Rich Text: A Code node (decode paragraphs) iterates over text-based blocks (paragraphs, lists) and uses a helper function to convert the Notion annotations array into standard HTML tags (e.g., `, , `). Convert Blocks: A second Code node (decode blocks) uses a large switch statement to map each Notion block type to its corresponding Gutenberg HTML structure. Rebuild Columns: A crucial Code node (column&column_list) runs once on all blocks. It finds all column blocks, then finds their children, and finally wraps them inside their parent column_list block. This is essential for correctly handling nested layouts. Filter & Aggregate: The workflow filters out all nested blocks, keeping only the top-level ones (since the nested content is now inside its parent, like the column block). It then aggregates all the generated HTML snippets into a single array. Final Output: A final Set node joins the array of HTML blocks with newline characters, producing a single text string in a field named wp. This string can be directly used in the "Content" field of a WordPress node in your parent workflow. Setup Notion Credentials: You must configure your Notion credentials in the two Notion nodes: Get a database page Get many child blocks Trigger: To use this, call it from another workflow using an Execute Workflow node. Pass the URL of the Notion page you want to convert in the notion_url field.
by Sandeep Patharkar | ai-solutions.agency
Animate Any Face into a Video with Fal.ai Create stunning deepfake-style videos automatically by swapping a face from an image onto a source video. This workflow provides a powerful, automated pipeline to perform video face-swapping using the Fal.ai API. It's designed to handle the entire asynchronous process: accepting a source video and a target face image, uploading them to cloud storage, initiating the AI job, polling for completion, and retrieving the final, rendered video. | Services Used | Features | | :--- | :--- | | 🤖 Fal.ai | Leverages the powerful Wan 2.2 model for high-quality face animation. | | ☁️ AWS S3 | Uses enterprise-grade cloud storage for reliable public file hosting. | | 🔄 Polling Loop | Intelligently waits for the asynchronous AI job to complete before proceeding. | | 📥 n8n Form Trigger | Provides a simple UI to upload your source image and video. | How It Works ⚙️ 📥 Get User Input: The workflow starts when you upload a source video and a face image via the n8n Form Trigger. ☁️ Upload to Cloud: Both files are automatically uploaded to a specified AWS S3 bucket to generate the publicly accessible URLs required by the AI model. 🚀 Start AI Job: The public URLs for the video and image are sent in an HTTP Request to the Fal.ai API, which starts the asynchronous face animation process and returns a request_id. ⏳ Wait & Check: The workflow enters a polling loop. It Waits for one minute, then makes another HTTP Request to the Fal.ai status endpoint using the request_id. ✅ Check for Completion: An IF node checks if the job status is COMPLETED. If not, the workflow loops back to the Wait node. 🎬 Retrieve Final Video: Once the job is complete, the workflow makes a final HTTP Request to fetch the finished animated video. 🛠️ How to Set Up 🔑 Set Up Fal.ai Credentials: Get your API Key from Fal.ai. In n8n, go to Credentials, add a new Header Auth credential, and save your key. Connect this credential to all three HTTP Request nodes in the workflow. ☁️ Configure AWS S3: Add your AWS credentials in n8n. In the two AWS S3 nodes (Upload Video1 and Upload Image1), update the Bucket Name parameter to your own S3 bucket. Ensure your bucket permissions allow for public reads. ▶️ Activate and Run: Activate the workflow. Open the Form Trigger URL from the n8n editor, upload your files, and submit. The final video will be available in the execution log of the Get Final Video node. Requirements An active Fal.ai account and API key. An AWS account with an S3 bucket configured for public access. Alternative Storage:* For a personal setup, you can replace the AWS S3 nodes with *Cloudinary** nodes. Just ensure the output is a public URL. 💬 Need Help or Want to Learn More? Join my Skool community for n8n + AI automation tutorials, live Q&A sessions, and exclusive workflows: 👉 https://www.skool.com/n8n-ai-automation-champions Template Author: Sandeep Patharkar Category: Content Generation / Content Marketing Difficulty: Intermediate Estimated Setup Time: ⏱️ 20 minutes
by WeblineIndia
Automate Video Upload → Auto-Thumbnail → Google Drive This workflow accepts a video via HTTP upload, verifies it’s a valid video, extracts a thumbnail frame at the 5-second mark using FFmpeg (auto-installs a static build if missing), uploads the image to a specified Google Drive folder and returns a structured JSON response containing the new file’s details. Who’s it for Marketing / Social teams** who need ready-to-publish thumbnails from raw uploads. Developers** who want an API-first thumbnail microservice without standing up extra infrastructure. Agencies / Creators** standardizing assets in a shared Drive. How it works Accept Video Upload (Webhook) Receives multipart/form-data with file in field media at /mediaUpload. Response is deferred until the final node. Validate Upload is Video (IF) Checks {{$binary.media.mimeType}} contains video/. Non-video payloads can be rejected with HTTP 400. Persist Upload to /tmp (Write Binary File) Writes the uploaded file to /tmp/<originalFilename or input.mp4> for stable processing. Extract Thumbnail with FFmpeg (Execute Command) Uses system ffmpeg if available; otherwise downloads a static binary to /tmp/ffmpeg. Runs: ffmpeg -y -ss 5 -i -frames:v 1 -q:v 2 /tmp/thumbnail.jpg Load Thumbnail from Disk (Read Binary File) Reads /tmp/thumbnail.jpg into the item’s binary as thumbnail. Upload Thumbnail to Drive (Google Drive) Uploads to your target folder. File name is <original>-thumb.jpg. Return API Response (Respond to Webhook) Sends JSON to the client including Drive file id, name, links, size, and checksums (if available). How to set up Import the workflow JSON into n8n. Google Drive Create (or choose) a destination folder; copy its Folder ID. Add Google Drive OAuth2 credentials in n8n and select them in the Drive node. Set the folder in the Drive “Upload” node. Webhook The endpoint is POST /webhook/mediaUpload. Test: curl -X POST https://YOUR-N8N-URL/webhook/mediaUpload \ -F "media=@/path/to/video.mp4" FFmpeg Nothing to install manually: the Execute Command node auto-installs a static ffmpeg if it’s not present. (Optional) If running n8n in Docker and you want permanence, use an image that includes ffmpeg. Response body The Respond node returns JSON with file metadata. You can customize the fields as needed. (Optional) Non-video branch On the IF node’s false output, add a Respond node with HTTP 400 and a helpful message. Requirements n8n instance with Execute Command node enabled (self-hosted/container/VM). Outbound network** access (to fetch static FFmpeg if not installed). Google Drive OAuth2** credential with permission to the destination folder. Adequate temp space in /tmp for the uploaded video and generated thumbnail. How to customize Timestamp**: change -ss 5 to another second, or parameterize it via query/body (e.g., timestamp=15). Multiple thumbnails**: duplicate the FFmpeg + Read steps with -ss 5, -ss 15, -ss 30, suffix names -thumb-5.jpg, etc. File naming**: include the upload time or Drive file ID: {{ base + '-' + $now + '-thumb.jpg' }}. Public sharing: add a **Drive → Permission: Create node (Role: reader, Type: anyone) and return webViewLink. Output target: replace the Drive node with **S3 Upload or Zoho WorkDrive (HTTP Request) if needed. Validation**: enforce max file size/MIME whitelist in a small Function node before writing to disk. Logging**: append a row to Google Sheets/Notion with sourceFile, thumbId, size, duration, status. Add-ons Slack / Teams notification** with the uploaded thumbnail link. Image optimization** (e.g., convert to WebP or resize variants). Retry & alerts** via error trigger workflow. Audit log** to a database (e.g., Postgres) for observability. Use Case Examples CMS ingestion**: Editors upload videos; workflow returns a thumbnail URL to store alongside the article. Social scheduling**: Upload longform to generate a quick hero image for a post. Client portals**: Clients drop raw footage; you keep thumbnails uniform in one Drive folder. Common troubleshooting | Issue | Possible Cause | Solution | | ----------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- | | ffmpeg: not found | System lacks ffmpeg and static build couldn’t download | Ensure outbound HTTPS allowed; keep the auto-installer lines intact; or use a Docker image that includes ffmpeg. | | Webhook returns 400 “not a video” | Wrong field name or non-video MIME | Send file in media field; ensure it’s video/*. | | Drive upload fails (403 / insufficient permissions) | OAuth scope or account lacks folder access | Reconnect Drive credential; verify the destination Folder ID and sharing/ownership. | | Response missing webViewLink / webContentLink | Drive node not returning link fields | Enable link fields in the Drive node or build URLs using the returned id. | | 413 Payload Too Large at reverse proxy | Proxy limits on upload size | Increase body size limits in your proxy (e.g., Nginx client_max_body_size). | | Disk full / ENOSPC | Large uploads filling /tmp | Increase temp storage; keep Cleanup step; consider size caps and early rejection. | | Corrupt thumbnail or black frame | Timestamp lands on a black frame | Change -ss or use -ss before -i vs. after; try different seconds (e.g., 1–3s). | | Slow extraction | Large or remote files; cold FFmpeg download | Warm the container; host near upload source; keep static ffmpeg cached in image. | | Duplicate outputs | Repeat requests with same video/name | Add a de-dup check (query Drive for existing <base>-thumb.jpg before upload). | Need Help? Want this wired to S3 or Zoho WorkDrive or to generate multiple timestamps and public links out of the box? We're happy to help.
by CustomJS
> ⚠️ Notice: > This workflow uses the HTML to Docx node from customjs.space, which requires a self-hosted n8n instance and a CustomJS API key. Landingpage → NDA Word Document (Docx) → Email Workflow This workflow demonstrates how to: Serve a landing page for requesting an NDA. Receive form submissions from users. Generate a Word Document (Docx) version of the NDA populated with the submitted data. Send the completed NDA via email to a recipient. Workflow Overview 1. Landingpage Endpoint Node:** Landingpage Endpoint (Webhook) Hosts the landing page and passes the URL dynamically to the HTML node. 2. Set Form Endpoint Node:** Set Form Endpoint Stores the landing page webhook URL into a variable FormEndpoint for the HTML form to submit to. 3. HTML for Landingpage Node:** HTML for Landingpage Renders a user-friendly landing page with a form for users to fill in their personal details: First Name Last Name Address House No. Postal Code City Country Includes success and error messages after submission. Submits data as JSON to the FormData Endpoint. 4. Respond to Webhook Node:** Respond to Webhook Returns the landing page HTML to the visitor when accessing the landing page URL. 5. FormData Endpoint Node:** FormData Endpoint (Webhook) Receives the submitted form data from the landing page. Passes data to the NDA (HTML Version) node. 6. NDA (HTML Version) Node:** NDA (HTML Version) Generates a personalized NDA document in HTML using the submitted form data: Populates recipient details (name, address, city, country, etc.) NDA clauses include: Definition of Confidential Information Obligations of the Recipient Exclusions Duration Return or Destruction of information Governing Law (England & Wales) 7. HTML to Docx Node:** HTML to Docx Converts the HTML NDA to a Word Document (Docx) using the CustomJS PDF/Docx Toolkit. Requires a CustomJS API key (Coding Service credential). 8. Send Email Node:** Send email Sends the generated NDA Docx as an email attachment. Email configuration: From: test@test.de To: test@testmail.com Subject: NDA Body Text: Hello, Here is the requested NDA form. Best Henrik Uses SMTP credentials for sending emails. Notes Sticky Notes** provide internal documentation and guidance for the workflow: Sticky Note1 – Landingpage server info Sticky Note – FormData endpoint info Dynamic Form Submission**: The form posts JSON to the FormData Endpoint. Automation Flow**: Landingpage → Form Submission → NDA HTML → Docx → Email Requirements Self-hosted n8n instance CustomJS API key SMTP credentials Optional: Tailwind CSS CDN for landing page styling Customization Tips Landing Page Styling**: Adjust the HTML for Landingpage node for branding, colors, or additional fields. NDA Content**: Edit the NDA (HTML Version) node to change NDA clauses or layout. Email Settings**: Change Send email node to modify sender, recipient, or message content. Field Mapping**: Ensure all form input names match the NDA template placeholders.
by Blurit
This n8n template demonstrates how to use Blurit to anonymize faces and/or license plates in images or videos directly within your workflow. Use cases include: automatically anonymizing dashcam videos, securing photos before sharing them publicly, or ensuring compliance with privacy regulations like GDPR. How it works The workflow starts with a Form Trigger where you can upload your image or video file. An HTTP Request node authenticates with the BlurIt API using your Client ID and Secret. The file is then uploaded to BlurIt via an HTTP Request to create a new anonymization task. A polling loop checks the task status until it succeeds. Once complete, the anonymized media is retrieved and saved using a Write Binary File node. How to use Replace the placeholder credentials in the Set Auth Config node with your BlurIt Client ID and Secret (found in your BlurIt Developer Dashboard). Execute the workflow, open the provided form link, and upload an image or video. The anonymized file will be written to your chosen output directory (or you can adapt the workflow to upload to cloud storage). Requirements A BlurIt account and valid API credentials (Client ID & Secret). A running instance of n8n (cloud or self-hosted). (Optional) Access to a shared folder or cloud storage service if you want to automate file delivery. Need Help? Contact us at support@blurit.io, or visit the BlurIt Documentation. Happy Coding!
by Sabrina Ramonov 🍄
Description This automation publishes to 9 social platforms daily! Manage your content in a simple Google Sheet. When you set a post's status to "Ready to Post" in your Google Sheet, this workflow grabs your image/video from your Google Drive, posts your content to 9 social platforms, then updates the Google Sheet post status to "Posted". Overview 1. Trigger: Check Every 3 Hours Check Google Sheet for posts with Status ""Ready to Post"" Return 1 post that is ready to go 2. Upload Media to Blotato Fetch image/video from Google Drive Upload image/video to Blotato 3. Publish to Social Media via Blotato Connect your Blotato account Choose your social accounts Either post immediately or schedule for later Includes support for images, videos, slideshows, carousels, and threads Setup Sign up for Blotato Generate Blotato API Key by going to Settings > API > Generate API Key (paid feature only) Ensure you have "Verified Community Nodes" enabled in your n8n Admin Panel. Install "Blotato" community node. Create credential for Blotato. Connect your Google Drive to n8n: https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service Copy this sample Google Sheet. Do NOT change the column names, unless you know what you're doing: https://docs.google.com/spreadsheets/d/1v5S7F9p2apfWRSEHvx8Q6ZX8e-d1lZ4FLlDFyc0-ZA4/edit Make your Google Drive folder containing images/videos PUBLIC (i.e. Anyone with the link) Complete the 3 setup steps shown in BROWN sticky notes in this template Troubleshooting Checklist your Google Drive is public column names in your Google Sheet match the original example file size < 60MB; for large files, Google Drive does not work, use Amazon S3 instead 📄 Documentation Full Tutorial Troubleshooting Check your Blotato API Dashboard to see every request, response, and error. Click on a request to see the details. Need Help? In the Blotato web app, click the orange button on the bottom right corner. This opens the Support messenger where I help answer technical questions
by Viktor Klepikovskyi
Nested Loops with Sub-workflows Template Description This template provides a practical solution for a common n8n challenge: creating nested loops. While a powerful feature, n8n's standard Loop nodes don't work as expected in a nested structure. This template demonstrates the reliable workaround using a main workflow that calls a separate sub-workflow for each iteration. Purpose The template is designed to help you handle scenarios where you need to iterate through one list of data for every item in another list. This is a crucial pattern for combining or processing related data, ensuring your workflows are both clean and modular. Instructions for Setup This template contains both the main workflow and the sub-workflow on a single canvas. Copy the sub-workflow part of this template (starting with the Execute Sub-workflow Trigger node) and paste it into a new, empty canvas. In the Execute Sub-workflow node in the main workflow on this canvas, update the Sub-workflow field to link to the new workflow you just created. Run the main workflow to see the solution in action. For a detailed walkthrough of this solution, check out the full blog post
by amudhan
This workflow uses Strapi as a CMS and then cross posts new blog posts to Medium and Dev.to.
by amudhan
This workflow uses n8n to extract the names of all the posts from the Hackernoon homepage.