by Alexandru Burca
AI-powered automation that rewrites, enhances, and publishes Telegram RSS content directly to your WordPress news site, including image/video upload and category mapping. Who’s it for This workflow is designed for content creators, news publishers, and social media managers who share updates on Telegram and want to automatically republish them as formatted articles on WordPress. It’s ideal for news portals, agencies, or blogs that manage content across multiple channels. How it works / What it does Fetches new posts from a Telegram channel feed (via RSS). Uses OpenAI to rewrite the text into a polished news-style article. Detects whether the content includes images or videos and downloads them. Uploads the media to WordPress and links it to the post. Automatically publishes the formatted article to WordPress with the correct category and excerpt. Set up steps Setup takes around 10–15 minutes. You’ll need API keys for OpenAI and WordPress Application Passwords. Add your Telegram RSS feed URL and WordPress site URL in the relevant nodes. (Optional) Adjust tone or rewrite style in the OpenAI node and category mapping in the Switch node. All configuration details are included in sticky notes inside the workflow. Requirements WordPress site with REST API access and Application Password OpenAI API key Telegram channels RSS URL How to customize the workflow You can easily adjust the writing style in the OpenAI node, change categories in the Switch node, or schedule how often the workflow checks Telegram for new posts.
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 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 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 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 n8n to extract the names of all the posts from the Hackernoon homepage.
by amudhan
This workflow uses Strapi as a CMS and then cross posts new blog posts to Medium and Dev.to.
by System Admin
Tagged with: , , , ,
by amudhan
Companion workflow for blogpost
by Rahul Joshi
Description: Streamline your cloud storage with this powerful Google Drive File Renamer automation built with n8n. The workflow watches a specific Google Drive folder and automatically renames new files using a standardized format based on their creation date and time—ideal for organizing images, backups, and uploads with consistent timestamp-based names. Whether you're managing daily uploads, sorting Instagram-ready content, or organizing client submissions, this timestamp-based file naming system ensures consistent and searchable file structures—without manual intervention. What This Template Does (Step-by-Step) 🔔 Google Drive Trigger – "Watch Folder" Setup Monitors a specific folder (e.g., “Instagram”) Detects new file creations every minute Captures file metadata like ID, createdTime, and extension 🧠 Set Formatted Name Extracts file creation time (e.g., 2025-07-22T14:45:10Z) Converts it into a structured name like IMG_20250722_1445.jpg Keeps original file extension (JPG, PNG, PDF, etc.) ✏️ Rename File (Google Drive) Renames the original file using Google Drive API Applies the new timestamped name Keeps file content, permissions, and location unchanged Required Integrations: Google Drive API (OAuth2 credentials) Best For: 📸 Content creators organizing uploads from mobile 🏷️ Branding teams enforcing uniform naming 🗄️ Admins managing scanned documents or backups 📂 Automated archives for media, reports, or daily snapshots Key Benefits: ✅ Timestamped naming ensures chronological file tracking ✅ Reduces human error and messy file names ✅ Works in real-time (polls every minute) ✅ No-code: Deploy with drag-and-drop setup in n8n ✅ Fully customizable name patterns (e.g., change IMG_ prefix)
by Sarfaraz Muhammad Sajib
Overview This n8n workflow automates the generation of short news videos using the HeyGen video API and RSS feeds from a Bangla news source, Prothom Alo. It is ideal for content creators, media publishers, or developers who want to create daily video summaries from text-based news feeds using AI avatars. The workflow reads the latest news summaries from an RSS feed and sends each item to the HeyGen API to create a video with a realistic avatar and voice narration. The resulting video is suitable for publishing on platforms like YouTube, Instagram, or TikTok. Requirements A HeyGen account with access to the API. HeyGen API key (kept securely in your environment). n8n (self-hosted or cloud instance). Basic understanding of using HTTP request nodes in n8n. Setup Instructions Clone this Workflow into your n8n instance. Replace the placeholder value in the X-Api-Key header with your HeyGen API key. Confirm the RSS feed URL is correct and live: https://prod-qt-images.s3.amazonaws.com/production/prothomalo-bangla/feed.xml The HTTP Request body references {{$json.summary}} from each RSS item. Make sure this field exists. Run the workflow manually or configure a CRON trigger if you want to automate it. Customization Avatar ID* and *Voice ID** can be changed in the HTTP Request body. Use your HeyGen dashboard to get available IDs. Change the video dimensions (1280x720) to suit your platform’s requirements. You can replace the RSS feed with any other news source that supports XML format. Add nodes to upload the video to YouTube, Dropbox, etc., after generation. What It Does Triggers manually. Reads an RSS feed. Extracts summary from each news item. Sends a request to HeyGen to generate a video. Returns the video generation response.