by Harshil Agrawal
This workflow allows you to receive messages from a queue via RabbitMQ and send an SMS.
by Automate With Marc
π GPT-5 + Veo-3 Instagram Reel Auto-Creator & Auto-Poster Description: This n8n workflow is a fully automated short-form video content engine that takes your creative idea, turns it into a cinematic video using Google Veo-3 via Wavespeed API, writes an engaging Instagram caption with GPT-5, and instantly posts it to Instagram via Postizβall without lifting a finger. Itβs designed for content creators, social media managers, and brands who want to produce high-quality, on-brand reels at scale without manual editing or posting. Watch Step-by-step build: www.youtube.com/@automatewithmarc π‘ Key Features: π¬ Chat-Triggered Automation (You can replace this with On Schedule trigger for automated generation) β Start the workflow with a simple message describing your video idea. π§ GPT-5 Video Prompt Agent β Transforms your concept into a visually rich, cinematic prompt optimized for Veo-3. π₯ Veo-3 AI Video Generation β Creates a polished short-form reel with cinematic motion, effects, and branding. βοΈ GPT-5 Caption Writer β Crafts an impactful, scroll-stopping caption tailored for Instagram engagement. π€ Auto-Posting with Postiz β Uploads and schedules (or instantly posts) your reel to Instagram without manual steps. β³ Automated Progress Checking β Wait & retry logic ensures posting only happens when the video is fully generated. π§ Tech Stack: GPT-5 via OpenAI API β AI for prompt engineering & caption creation. Google Veo-3 (via Wavespeed API) β Next-gen text-to-video model for short-form content. Postiz API β Multi-platform social media posting automation. n8n β Orchestration & automation engine. π Ideal Use Cases: Instagram Reels / TikTok Creators who want to post daily without editing. Fitness, Fashion, Travel & Lifestyle Brands looking for high-quality, thematic reels. Social Media Agencies producing client content at scale. Event Marketers creating same-day recap videos. π Setup Instructions: Add your API keys for OpenAI (GPT-5), Wavespeed (Veo-3), and Postiz. Connect Postiz to your Instagram account. Trigger the workflow with a chat message describing your desired video. Watch your idea transform into a reelβfully captioned and posted automatically. π― Why This Workflow Stands Out: End-to-end automation from idea β video β caption β Instagram post. AI-driven creative consistency for brand identity. Scales your content production without hiring editors. SEO & engagement-ready captions crafted for social virality.
by phil
This workflow automates the update of Yoast SEO metadata for a specific post or product on a WordPress or WooCommerce site. It sends a POST request to a custom API endpoint exposed by the Yoast SEO API Manager plugin, allowing for programmatic changes to the SEO title and meta description. Bulk version available here. Prerequisites A WordPress site with administrator access. The Yoast SEO plugin installed and activated. The Yoast SEO API Manager companion plugin installed and activated to expose the required API endpoint. WordPress credentials configured within your n8n instance. Setup Steps Configure the Settings Node: In the Settings node, replace the value of the wordpress URL variable with the full URL of your WordPress site (e.g., https://your-domain.com/). Set Credentials: In the HTTP Request - Update Yoast Meta node, select your pre-configured WordPress credentials from the Credential for WordPress API dropdown menu. Define Target and Content: In the same HTTP Request node, navigate to the Body Parameters section and update the following values: post_id: The ID of the WordPress post or WooCommerce product you wish to update. yoast_title: The new SEO title. yoast_description: The new meta description. How It Works Manual Trigger: The workflow is initiated manually. This can be replaced by any trigger node for full automation. Settings Node: This node defines the base URL of the target WordPress instance. This centralizes the configuration, making it easier to manage. HTTP Request Node: This is the core component. It constructs and sends a POST request to the /wp-json/yoast-api/v1/update-meta endpoint. The request body contains the post_id and the new metadata, and it authenticates using the selected n8n WordPress credentials. Customization Guide Dynamic Inputs**: To update posts dynamically, replace the static values in the HTTP Request node with n8n expressions. For example, you can use data from a Google Sheets node by setting the post_id value to an expression like {{ $json.column_name }}. Update Additional Fields: The underlying API may support updating other Yoast fields. Consult the **Yoast SEO API Manager plugin's documentation to identify other available parameters (e.g., yoast_canonical_url) and add them to the Body Parameters section of the HTTP Request node. Change the Trigger**: Replace the When clicking βTest workflowβ node with any other trigger node to fit your use case, such as: Schedule: To run the update on a recurring basis. Webhook: To trigger the update from an external service. Google Sheets: To trigger the workflow whenever a row is added or updated in a specific sheet. Yoast SEO API Manager Plugin for WordPress // ATTENTION: Replace the line below with <?php - This is necessary due to display constraints in web interfaces. <?php /** Plugin Name: Yoast SEO API Manager v1.2 Description: Manages the update of Yoast metadata (SEO Title, Meta Description) via a dedicated REST API endpoint. Version: 1.2 Author: Phil - https://inforeole.fr (Adapted by Expert n8n) */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Yoast_API_Manager { public function __construct() { add_action('rest_api_init', [$this, 'register_api_routes']); } /** Registers the REST API route to update Yoast meta fields. */ public function register_api_routes() { register_rest_route( 'yoast-api/v1', '/update-meta', [ 'methods' => 'POST', 'callback' => [$this, 'update_yoast_meta'], 'permission_callback' => [$this, 'check_route_permission'], 'args' => [ 'post_id' => [ 'required' => true, 'validate_callback' => function( $param ) { $post = get_post( (int) $param ); if ( ! $post ) { return false; } $allowed_post_types = class_exists('WooCommerce') ? ['post', 'product'] : ['post']; return in_array($post->post_type, $allowed_post_types, true); }, 'sanitize_callback' => 'absint', ], 'yoast_title' => [ 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', ], 'yoast_description' => [ 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', ], ], ] ); } /** Updates the Yoast meta fields for a specific post. * @param WP_REST_Request $request The REST API request instance. @return WP_REST_Response|WP_Error Response object on success, or WP_Error on failure. */ public function update_yoast_meta( WP_REST_Request $request ) { $post_id = $request->get_param('post_id'); if ( ! current_user_can('edit_post', $post_id) ) { return new WP_Error( 'rest_forbidden', 'You do not have permission to edit this post.', ['status' => 403] ); } // Map API parameters to Yoast database meta keys $fields_map = [ 'yoast_title' => '_yoast_wpseo_title', 'yoast_description' => '_yoast_wpseo_metadesc', ]; $results = []; $updated = false; foreach ( $fields_map as $param_name => $meta_key ) { if ( $request->has_param( $param_name ) ) { $value = $request->get_param( $param_name ); update_post_meta( $post_id, $meta_key, $value ); $results[$param_name] = 'updated'; $updated = true; } } if ( ! $updated ) { return new WP_Error( 'no_fields_provided', 'No Yoast fields were provided for update.', ['status' => 400] ); } return new WP_REST_Response( $results, 200 ); } /** Checks if the current user has permission to access the REST API route. * @return bool */ public function check_route_permission() { return current_user_can( 'edit_posts' ); } } new Yoast_API_Manager(); Bulk version available here : this bulk version, provided with a dedicated WordPress plugin, allows you to generate and bulk-update meta titles and descriptions for multiple articles simultaneously using artificial intelligence. It automates the entire process, from article selection to the final update in Yoast, offering considerable time savings. . Phil | Inforeole
by Mauricio Perera
π Description This workflow allows you to extract all links (URLs) contained in a PDF file by converting it to HTML via PDF.co and then extracting the URLs present in the resulting HTML. Unlike the traditional Read PDF node, which only returns visible link text, this flow provides the full active URLs, making further processing and analysis easier. π Use Cases Extract all hyperlinks from PDF documents. Automate URL verification and monitoring within documents. Extract links from reports, contracts, catalogs, newsletters, or manuals. Prepare URLs for validation, classification, or storage. π Workflow Overview User uploads a PDF file via a web form. The PDF is uploaded to PDF.co. The PDF is converted to HTML (preserving links). The converted HTML is downloaded. URLs are extracted from the HTML using a custom code node. βοΈ Node Breakdown 1. Load PDF (formTrigger) Uploads a .pdf file. Single file upload. 2. Upload (PDF.co API) Uploads the PDF file to PDF.co using binary data. 3. PDF to HTML (PDF.co API) Converts the uploaded PDF to HTML using its URL. 4. Get HTML (HTTP Request) Downloads the converted HTML from PDF.co. 5. Code1 (Function / Code) Parses the HTML content to extract all URLs (http, https, www). Uses a regex to identify URLs within the HTML text. Outputs an array of objects containing the extracted URLs. π Requirements Active PDF.co account with API key. Set up PDF.co credentials in n8n (PDF.co account). Enable webhook to expose the upload form. π οΈ Suggested Next Steps Add nodes to validate extracted URLs (e.g., HTTP requests to check status). Store URLs in a database, spreadsheet, or send via email. Extend the flow to filter URLs by domain, type, or pattern. π€ Importing the Template Import this workflow into n8n via Import workflow and paste the provided JSON. If you want help adding extra steps or optimizing the URL extraction, just ask! If you want, I can also prepare this as a Canva visual template for you. Would you like that?
by Marth
How It Works: The 5-Node Security Flow This workflow efficiently performs a scheduled file integrity audit. 1. Scheduled Check (Cron Node) This is the workflow's trigger. It schedules the workflow to run at a specific, regular interval. Function:** Continuously runs on a set schedule, for example, daily at 3:00 AM. Process:** The Cron node automatically initiates the workflow on its schedule, ensuring consistent file integrity checks without manual intervention. 2. List Files & Checksums (Code Node) This node acts as your static database, defining which files to monitor and their known-good checksums. Function:** Stores the file paths and their verified checksums in a single, easy-to-update array. Process:** It configures the file paths and their valid checksums, which are then passed on to subsequent nodes for processing. 3. Get Remote File Checksum (SSH Node) This node connects to your remote server to get the current checksum of the file being monitored. Function:** Executes a command on your server via SSH. Process:** It runs a command like sha256sum /path/to/file on the server. The current checksum is then captured and passed to the next node for comparison. 4. Checksums Match? (If Node) This is the core detection logic. It compares the newly retrieved checksum from the server with the known-good checksum you stored. Function:** Compares the two checksum values. Process:* If the checksums *do not match**, it indicates a change in the file, and the workflow is routed to the notification node. If they do match, the workflow ends safely. 5. Send Alert (Slack Node) / End Workflow (No-Op Node) These nodes represent the final action of the workflow. Function:** Responds to a detected file change. Process:* If the checksums don't match, the *Slack* node sends a detailed alert with information about the modified file, the expected checksum, and the detected checksum. If the checksums match, the *No-Op** node ends the workflow without any notification. How to Set Up Implementing this essential cybersecurity monitor in your n8n instance is quick and straightforward. 1. Prepare Your Credentials & Server Before building the workflow, ensure all necessary accounts are set up and their credentials are ready. SSH Credential:* Set up an *SSH credential** in n8n with your server's hostname, port, and authentication method (e.g., private key or password). The SSH user must have permission to run sha256sum on the files you want to monitor. Slack Credential:* Set up a *Slack credential* in n8n and note the *Channel ID** of your security alert channel (e.g., #security-alerts). Get Checksums:* *This is a critical step.** Manually run the sha256sum [file_path] command on your server for each file you want to monitor. Copy and save the generated checksum valuesβthese are the "known-good" checksums you will use as your reference. 2. Import the Workflow JSON Get the workflow structure into your n8n instance. Import:** In your n8n instance, navigate to the "Workflows" section. Click the "New" or "+" icon, then select "Import from JSON." Paste the provided JSON code into the import dialog and import the workflow. 3. Configure the Nodes Customize the imported workflow to fit your specific monitoring needs. Scheduled Check (Cron):** Set the schedule according to your preference (e.g., daily at 3:00 AM). List Files & Checksums (Code):* Open this node and *edit the filesToCheck array**. Enter your actual server file paths and paste the "known-good" checksums you manually obtained in step 1. Get Remote File Checksum (SSH):* Select your *SSH credential**. Send Alert (Slack):* Select your *Slack credential* and replace YOUR_SECURITY_ALERT_CHANNEL_ID with your actual *Channel ID**. 4. Test and Activate Verify that your workflow is working correctly before setting it live. Manual Test:** Run the workflow manually. Verify that it connects to the server and checks the files without sending an alert (assuming the files haven't changed). Verify:** To test the alert, manually change one of the files on your server and run the workflow again. Check your Slack channel to ensure the alert is sent correctly. Activate:** Once you're confident in its function, activate the workflow. n8n will now automatically audit the integrity of your critical files on the schedule you set.
by Yaron Been
Generate Animated Human Videos from Images & Audio with Bytedance Omni Human Built with n8n + Replicate This workflow takes an image + audio, sends them to Bytedanceβs omni-human model, waits for processing, and returns a generated video. β‘ Section 1: Start & Authenticate βΆοΈ On clicking βexecuteβ** β Manual trigger to start the workflow. π Set API Key** β Stores your Replicate API key so future requests are authorized. Benefit: Secures your API credentials in one place for easy re-use. π οΈ Section 2: Send Video Generation Request π‘ Create Prediction** β Makes a POST request to Replicate with: image: input image URL audio: input audio URL Model version: 7ec44f5140c7338b3496cbf99ee8ea391a4bc18ff5d1677a146dfc936a91f65b Benefit: Combines visual and audio inputs to start AI-powered video generation. π Section 3: Track the Prediction π¦ Extract Prediction ID** β Saves predictionId, status, and predictionUrl for polling. β³ Wait** β Pauses 2 seconds between status checks (to avoid spamming the API). π Check Prediction Status** β Queries Replicate using the stored prediction URL. β Check If Complete** β Branches: If status = succeeded β move forward. Else β loop back to Wait until completion. Benefit: Ensures workflow patiently waits for the video instead of timing out. π½οΈ Section 4: Process & Return Results π¦ Process Result** β Cleans the API response, returning: status video_url (generated video) metrics created_at & completed_at model: bytedance/omni-human Benefit: Gives you a neat, structured output with the generated video link ready to use. π Workflow Overview | Section | Purpose | Key Nodes | Benefit | | ------------------- | --------------------------- | --------------------------------------------- | -------------------------------- | | β‘ Start & Auth | Initialize & secure API key | Manual Trigger, Set API Key | Keeps credentials safe | | π οΈ Send Request | Start video generation | Create Prediction | Submits image+audio to Replicate | | π Track Prediction | Poll status until done | Extract Prediction ID, Wait, Check Status, If | Reliable async handling | | π½οΈ Process Result | Format output | Process Result | Easy access to final video link | β Final Benefits π¬ Turns static image + audio into full AI-generated video. π API key stored securely in workflow. π Handles async generation with auto-polling. π€ Outputs clean JSON with direct video link. π§© Modular β you can connect results to Slack, Gmail, or Google Drive for auto-sharing.
by System Admin
Tagged with: , , , ,
by Mirajul Mohin
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. What this workflow does Monitors Google Drive for new video file uploads Downloads and processes videos using VLM Run AI transcription Generates accurate transcripts with timestamps, audio content, and video descriptions Saves formatted reports to Google Docs for instant access and sharing Setup Prerequisites: Google Drive account, VLM Run API credentials, Google Docs access, self-hosted n8n. You need to install VLM Run community node Quick Setup: Configure Google Drive OAuth2 and create video upload folder Add VLM Run API credentials Set up Google Docs integration for transcript storage Update folder/document IDs in workflow nodes Test with sample video files and activate Perfect for Meeting transcription and documentation Content creation and video accessibility Educational content processing and analysis Interview transcription and note-taking Podcast and webinar documentation Legal deposition and testimony recording Customer support call analysis Key Benefits Asynchronous processing** handles large video files without timeouts Multi-format support** for MP4, AVI, MOV, WebM, MKV formats Dual content extraction** captures both audio transcripts and video descriptions Eliminates manual transcription** saving hours of documentation time High accuracy speech recognition** with multi-language support Structured output** with timestamps and scene descriptions How to customize Extend by adding: Speaker identification and voice separation Sentiment analysis and keyword extraction Integration with project management tools Email notifications for transcription completion Summary generation and key point extraction Multi-language translation capabilities Search indexing for transcript databases Integration with video editing software This workflow transforms manual video transcription into an automated, accurate, and efficient process, making video content accessible and searchable for your business operations, educational needs, or content creation workflows.
by Shahrear
Transform your expense tracking with automated AI receipt processing that extracts data and organizes it instantly. What this workflow does Monitors Google Drive for new receipt uploads (images/PDFs) Downloads and processes files automatically Extracts key data using verified VLM Run node (merchant, amount, currency, date) Saves structured data to Airtable for easy tracking Setup Prerequisites: Google Drive account, Airtable account, VLM Run API credentials, n8n instance. Install the verified VLM Run node by searching for VLM Run in the node list, then click Install. Once installed, you can start using it in your workflows. Quick Setup: Configure Google Drive OAuth2, Airtable OAuth2 Create receipt upload folder Add VLM Run API credentials Create Airtable table with columns: Customer, Merchant, Amount, Currency, Date Update folder/table IDs in workflow nodes Test and activate How to customize this workflow to your needs Extend functionality by: Adding expense categories and approval workflows Connecting to accounting software (QuickBooks, Xero) Including Slack notifications for processed receipts Adding data validation and duplicate detection This workflow transforms manual receipt processing into an automated system that saves hours while improving accuracy. > β οΈ Disclaimer: This workflow requires a self-hosted n8n setup because it uses custom nodes (VLM Run) that are not available on the managed n8n.cloud service.
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 Alok Singh
Step 1: Slack Trigger The workflow starts whenever your Slack bot is mentioned or receives an event in a channel. The message that triggered it (including text and channel info) is passed into the workflow. Step 2: Extract the Sheet ID The workflow looks inside the Slack message for a Google Sheets link. If it finds one, it extracts the unique spreadsheet ID from that link. It also keeps track of the Slack channel where the message came from. If no link is found, the workflow stops quietly. Step 3: Read Data from Google Sheet Using the sheet ID, the workflow connects to Google Sheets and reads the data from the chosen tab (the specific sheet inside the spreadsheet). This gives the workflow all the rows and columns of data from that tab. Step 4: Convert Data to CSV The rows pulled from Google Sheets are then converted into a CSV file. At this point, the workflow has the spreadsheet data neatly packaged as a file. Step 5: Upload CSV to Slack Finally, the workflow uploads the CSV file back into Slack. It can either be sent to a fixed channel or directly to the same channel where the request came from. Slack users in that channel will see the CSV as a file upload. How it works The workflow is triggered when your Slack bot is mentioned or receives a message. It scans the message for a Google Sheets link. If a valid link is found, the workflow extracts the unique sheet ID. It then connects to Google Sheets, reads the data from the specified tab, and converts it into a CSV file. Finally, the CSV file is uploaded back into Slack so the requesting user (and others in the channel) can download it. How to use In Slack, mention your bot and include a Google Sheets link in your message. The workflow will automatically pick up the link and process it. Within a short time, the workflow will upload a CSV file back into the same Slack channel. You can then download or share the CSV file directly from Slack. Requirements Slack App & Credentials: Your bot must be installed in Slack with permissions to receive mentions and upload files. Google Sheets Access: The Google account connected in n8n must have at least read access to the sheet. n8n Setup: The workflow must be imported into n8n and connected to your Slack and Google Sheets credentials. Correct Sheet Tab: The workflow needs to know which tab of the spreadsheet to read (set by name or by sheet ID). Customising this workflow Channel Targeting: By default, the file can be sent back to the channel where the request came from. You can also set it to always post in a fixed channel. File Naming: Change the uploaded file name (e.g., include the sheet title or todayβs date). Sheet Selection: Adjust the configuration to read a specific tab or allow the user to specify the tab in their Slack message. Error Handling: Add extra steps to send a Slack message if no valid link is detected, or if the Google Sheet cannot be accessed. Formatting: Extend the workflow to clean, filter, or enrich the data before converting it into CSV.
by Daniel
Transform your Telegram chats into a creative powerhouse with this AI-driven image editing bot. Send an image document with a descriptive caption, and watch it get intelligently edited in secondsβno design skills required! π What This Template Does This workflow powers a Telegram bot that automatically processes incoming image documents with text prompts. It downloads the file, uses Google Gemini AI to edit the image based on your caption, and instantly replies with the enhanced version. Triggers on new messages containing documents and captions Securely downloads and validates files before AI processing Leverages Gemini for precise, prompt-based image edits Sends the polished result back to the chat seamlessly π§ Prerequisites A Telegram bot created via @BotFather Google AI Studio account for Gemini API access n8n instance with Telegram and Google Gemini nodes enabled π Required Credentials Telegram API Setup Open Telegram and message @BotFather Use /newbot to create your bot and note the token In n8n, go to Credentials β Add Credential β Search "Telegram API" Paste the token and save as "Telegram Bot" Google Gemini API Setup Visit aistudio.google.com and sign in with Google Click "Get API key" β Create API key in a new project In n8n, go to Credentials β Add Credential β Search "Google Gemini API" Enter the API key and save as "Gemini API" βοΈ Configuration Steps Import the provided JSON into your n8n workflows Assign the Telegram Bot credential to the trigger and Telegram nodes Assign the Gemini API credential to the Edit Image node Activate the workflow and note your bot's username Test by sending an image document with a caption like "add a sunset background" to your bot π― Use Cases Personal creativity boost**: Send a selfie with "make me a superhero" for fun edits during downtime Social media content**: Upload product photos with "enhance lighting and add text overlay" for quick marketing visuals Educational sketches**: Share drawings with "colorize and detail" to turn student ideas into professional illustrations Team collaboration**: In group chats, prompt "remove background" for instant design feedback loops β οΈ Troubleshooting Bot not responding**: Verify token in credentials and ensure "message" updates are enabled in the trigger File download fails**: Check if the sent file is a document/image; Telegram expires links after 1 hourβresend if needed AI edit errors**: Confirm Gemini API key quotas; shorten prompts if over 100 words for better results No edited image sent**: Inspect execution log for binary data flow; ensure "binaryData" is toggled on in send node