by Aayushman Sharma
Sync Youtube Videos with Google Sheets (Part 1 of Youtube comments sentiment analyze automation along with detailed dashboard) This workflow is the first part of a multi-part automation system designed to perform large-scale YouTube comment sentiment analysis alongwith detailed dashboard. It solves the problem of manually tracking new videos across multiple YouTube channels by automatically fetching and organizing video URLs in a Google Sheet, setting the stage for deeper analysis in Part 2. What It Does Reads Channel IDs from Sheet3 of a connected Google Sheet. Fetches the latest videos from each Channel ID using the YouTube Data API. Extracts video URLs and metadata (like title and publish date). Appends the video data to Sheet2 of the same Google Sheet — this sheet is later used by Part 2 for further processing. Part of a Multi-Step System This is Part 1 of a 2-workflow system: Part 1 (this workflow)** populates a sheet with the latest videos from a list of channels. Part 2* reads the video URLs from Sheet2, fetches comments for each video, analyzes their sentiment using *OpenAI**, and stores structured results in Sheet1. 👉 Continue to Part 2 – YouTube Comment Sentiment Analyzer with Google Sheets & OpenAI ✅ Use Cases Monitor and organize new videos from a list of YouTube channels Automate content pipelines for social media teams and analysts Build scalable datasets for comment and sentiment analysis Perfect for creators, agencies, or data analysts managing multiple YouTube accounts 🔧 Apps Used Google Sheets** – To read and write channel/video data YouTube** – To fetch video data from public channels 💡 Why Use This? Manually checking YouTube channels for new content is time-consuming and error-prone. This automation ensures your data stays current and structured — enabling consistent tracking and deeper analysis (especially when paired with Part 2). It brings speed, scale, and automation to your YouTube content operations. How to Customize 1. Modify Trigger Settings Change the Google Sheet (Sheet 3) channel ID entry to track other channels. Use a time-based trigger to fetch new videos regularly, ensuring your data stays up to date. 2. Adjust Output Fields Fetch additional details from YouTube, such as view count, description, or thumbnails. Add custom columns in Sheet 2 for organizing videos by different criteria, such as: "Published Date" "Video Type" "View Count" "Video Description" 3. Extend with Integrations Integrate with other workflows like YouTube Comment Sentiment Analysis (Part 2) for a deeper dive into content analysis. Use filters to fetch videos by certain tags, keywords, or publish dates. 4. Adjust Sheet Structure Modify the structure of Sheet 2 to categorize videos based on criteria like: Channel Video Status (e.g., "Published," "Scheduled") Video Type (e.g., "Tutorial," "Review") 5. Schedule Regular Fetching Set a schedule trigger to fetch videos at regular intervals (e.g., daily or weekly), ensuring new content is automatically added to your sheet. 6. Customize Google Sheet Layout Change the layout of Sheet 2 to better fit your needs. For example, you can add additional columns for
by Sascha
Automating your marketing campaign management process can streamline your workflow and save you valuable time. With the combination of Baserow and n8n, you can efficiently handle your campaign data and seamlessly publish content to your Shopify store. In this workflow template, I demonstrate how to leverage Baserow as a centralized platform for organizing your marketing campaign assets, including copy and images. By utilizing n8n, we automate the process of fetching images and campaign descriptions from Baserow and uploading them directly to your Shopify store. With this automated solution, you can expedite the publishing process, ensuring that your campaigns are launched swiftly across your sales channels. Additionally, this workflow serves as a foundational step towards further automation in campaign management, allowing you to dynamically generate and upload content to your Shopify store with ease. This template will help you: Use n8n to get images for marketing campaigns from Baserow and upload them to your Shopify media library Dynamically inject data from Baserow into a template file Upload a template file to your Shopify theme This template will demonstrate the follwing concepts in n8n: use the Webhook node use the IF node to control the execution flow of the workflow do time calculation using expressions and javascript use the GraphQL node to upload images to your Shopify media files create a dynamic template file for your Shopify theme use the HTTP Reqest node to upload your template file to your Shopify store How to get started? Create a custom app in Shopify get the credentials needed to connect n8n to Shopify This is needed for the Shopify Trigger Create Shopify Acces Token API credentials n n8n for the Shopify trigger node Create Header Auth credentials: Use X-Shopify-Access-Token as the name and the Acces-Token from the Shopify App you created as the value. The Header Auth is neccessary for the GraphQL nodes. You will need a running Baserow instance for this. You can also sign up for a free account at https://baserow.io/ Please make sure to read the notes in the template. For a detailed explanation please check the corresponding video: https://youtu.be/Ky-dYlljGiY
by joseph
🧵 Generate Conversational Twitter/X Threads with GPT-4o AI (n8n Workflow) This workflow uses OpenAI (GPT-4o) and Twitter/X to automatically generate and publish engaging, conversational threads in response to a trigger (e.g., from a chatbot or form). 🚀 What Does It Do? Listens for an incoming message (e.g., via webhook or another n8n input). Uses GPT-4o to craft a narrative-style Twitter thread in a personal, friendly tone. Publishes the first tweet, then automatically posts each following tweet as a reply—building a full thread. 🛠️ What Do You Need to Configure? Before using this template, make sure to set up the following credentials: OpenAI Add your OpenAI API key in the OpenAI Chat Model node. This is used to generate the thread content. Twitter/X Add your Twitter OAuth2 credentials to the First Tweet and Thread Reply nodes. This allows the workflow to publish tweets on your behalf. ✨ Who Is This For? This template is perfect for: Content creators who want to share ideas regularly Personal brands looking to grow their presence Social media managers automating thread creation 🔧 How to Customize It You can easily adjust the tone, structure, or length of the threads by modifying the system prompt in the OpenAI node. For example: To create threads with humor, change the prompt to “Write in a witty and humorous tone.” To tailor it for marketing, prompt it with “Write a persuasive product-focused Twitter thread.” You can also integrate this workflow with: Telegram bots Web forms (e.g., Typeform, Tally) CRM tools or newsletter platforms 📋 Sample Output Prompt sent to the workflow: “Tips for growing on Twitter in 2025” Generated thread: ++Tweet 1:++ Thinking of growing your presence on Twitter/X in 2024? Here's a thread with the most effective strategies that actually work 🧵 ++Reply 1:++ Engage, don’t broadcast Twitter is a conversation platform. Reply to others, quote-tweet, and start discussions instead of just posting links. ++Reply 2:++ Consistency beats virality Tweeting regularly builds trust and visibility. You don't need to go viral — just show up.
by Tom
This workflow uses a number of technologies to track the value of ETFs, stocks and other exchange-traded products: Baserow: To keep track of our investments n8n’s Cron node: To trigger the workflow compiling our daily morning briefing Webscraping: The HTTP Request & HTML Extract nodes to fetch up-to-date prices from the relevant stock exchange and structure this infromation Javascript: We’ll use the Function node to build a custom HTML body with all the relevant information Sendgrid: The Email Service Provider in this workflow to send out our email Thanks to n8n, the steps in this workflow can easily be changed. Not a Sendgrid user? Simply remove the Sendgrid node and add a Gmail node instead. The stock exchange has a REST API? Just throw away the HTML Extract node. Here’s how it works: Data Source In this scenario, our data source is Baserow. In our table, we’ll track all information needed to identify each investment product: We have two text type columns (Name and ISIN) as well as two number type columns (Count and Purchase Price). Workflow Nodes 1. Cron The Cron node will trigger our workflow to run each work day in the morning hours. 2. Baserow The Baserow node will fetch our investments from the database table shown above. 3. HTTP Request Using the HTTP Request node we can fetch live data from the stock exchange of our choice based on the ISIN. This example uses Tradegate, which is used by many German fintechs. The basic approach should also work for other exchanges, as long as they provide the required data to the public. 4. HTML Extract Since our HTTP Request node fetches full websites, we’re using the HTML Extract node to extract the information we’re looking for from each website. If an exchange other than Tradegate is used, the selectors used in this node will most likely need to be updated. 5. + 6. Set The Set nodes helps with setting the exact columns we’ll use in our table. In this case we’re first formatting the results from our exchange, then calculate the changes based on the purchase price. 7. Function Here were using a bit of Javascript magic to build an HTML email. This is where any changes to the email content would have to be made. 8. Sendgrid Finally we send out the email built in the previous step. This is where you can configure sender and recipients. Result The basic email generated by this workflow will look like so:
by Tom
This workflows helps with processing binary data. You'll often have binary objects with keys such as attachment_0, attachment_1, attachment_2, etc. attached to your items, for example when reading an incoming email. This binary data is hard to process because it's not an array you can simply loop through. This workflow solves this problem by providing a Function node that takes all incoming items and all their binary data and then returning a single item for each file with a data key containing your binary file. Incoming binary data: Processed binary data:
by Marth
How It Works ⚙️ This workflow systematically ensures you never miss sending an invoice reminder: Daily Schedule Trigger: ⏰ The workflow starts automatically at a set time each day (e.g., every morning). This ensures continuous monitoring of your invoice statuses. Read Invoice Data (Google Sheets): 📊 The workflow connects to your specified Google Sheet to retrieve a list of all your invoices and their details. Ensure your sheet has required columns like InvoiceID, ClientName, ClientEmail, Amount, DueDate, and Status. Filter & Prepare Reminders (Function): 🧹 This is the core logic. It processes each invoice row: Compares the DueDate with the current date. Identifies invoices that are due soon (e.g., within 3 days) or are already overdue (e.g., up to 7 days past due). Skips invoices marked as 'Paid'. Prepares a custom subject line and email body for each relevant reminder. If Invoices to Remind?: 🚦 This node acts as a gate. If the previous step found any invoices needing reminders, the workflow proceeds. If not, it stops gracefully. Send Invoice Reminder (Gmail): 📧 For each filtered invoice, this node sends a personalized email reminder to the client. The email uses the dynamic subject and body prepared in the 'Filter & Prepare Reminders' step. How to Set Up 🛠️ Follow these steps carefully to get your "Automated Invoice Reminder" workflow up and running: Import Workflow JSON: Open your n8n instance. Click on 'Workflows' in the left sidebar. Click the '+' button or 'New' to create a new workflow. Click the '...' (More Options) icon in the top right. Select 'Import from JSON' and paste the entire JSON code provided in the previous response for this workflow. Configure Daily Schedule Trigger: Locate the 'Daily Schedule Trigger' node (1. Daily Schedule Trigger). Adjust 'interval', 'value', and 'timezone' to your preferred daily reminder time (e.g., every 24 hours at 9 AM in your local timezone). Configure Read Invoice Data (Google Sheets): Locate the 'Read Invoice Data (Google Sheets)' node (2. Read Invoice Data). Credentials: Select your existing Google Sheets OAuth2 credential or click 'Create New' to set one up. Replace YOUR_GOOGLE_SHEETS_CREDENTIAL_ID with the actual ID or name of your credential from your n8n credentials. Sheet ID: Replace YOUR_GOOGLE_SHEET_ID with the actual ID of your Google Sheet where invoice data is stored. Range: Ensure the 'range' (e.g., Invoices!A:F) correctly covers all your invoice data. Crucially, ensure your Google Sheet has columns with exact names: InvoiceID, ClientName, ClientEmail, Amount, DueDate (in a parsable date format like YYYY-MM-DD), and Status (e.g., 'Pending', 'Paid'). Configure Filter & Prepare Reminders (Function): Locate the 'Filter & Prepare Reminders' node (3. Filter & Prepare Reminders). Date & Field Names: Review the functionCode inside the node. Adjust the variable names (e.g., invoice.InvoiceID, invoice.DueDate) if your Google Sheet uses different column headers than the defaults assumed in the code. Reminder Window: You can modify remindBeforeDays (e.g., 3 days before) and remindAfterDays (e.g., 7 days after) to adjust how many days before/after the due date reminders are sent. Email Content: Modify the subjectPrefix and bodyText within the code to customize the reminder message for 'due soon' and 'overdue' invoices. Configure Send Invoice Reminder (Gmail): Locate the 'Send Invoice Reminder (Gmail)' node (5. Send Invoice Reminder). Credentials: Select your existing Gmail OAuth2 credential or click 'Create New'. Replace YOUR_GMAIL_CREDENTIAL_ID with the actual ID or name of your credential from your n8n credentials. From Email: Replace YOUR_SENDER_EMAIL@example.com with the email address you want the reminders to be sent from. Email Content: The 'subject' and 'html' fields are dynamically generated by the previous 'Function' node (={{ $json.subject }} and ={{ $json.body }}). You can further customize the HTML email template here if needed. Review and Activate: Thoroughly review all node configurations. Ensure all placeholder values (like YOUR_...) are replaced and settings are correct. Click the 'Save' button in the top right corner. Finally, toggle the 'Inactive' switch to 'Active' to enable your workflow. 🟢 Your automated invoice reminder is now live and ready to improve your cash flow! Troubleshooting Tips: 💡 Execution History:** Always check the 'Executions' tab in n8n for detailed error messages if the workflow fails. Google Sheet Data:** Ensure your Google Sheet data is clean and matches the expected column headers and date formats. Function Node Logic:** If invoices aren't being filtered correctly, the Function node is the place to debug. Use the 'Test Workflow' feature to inspect the data flowing into and out of this node. Credential Issues:** Double-check that all credentials are correctly set up and active in n8n.
by Yaron Been
Citoreh Nazanin AI Generator Description None Overview This n8n workflow integrates with the Replicate API to use the citoreh/nazanin model. This powerful AI model can generate high-quality other content based on your inputs. Features Easy integration with Replicate API Automated status checking and result retrieval Support for all model parameters Error handling and retry logic Clean output formatting Parameters Required Parameters prompt** (string): Prompt for generated image. If you include the trigger_word used in the training process you are more likely to activate the trained object, style, or concept in the resulting image. Optional Parameters mask** (string, default: None): Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored. seed** (integer, default: None): Random seed. Set for reproducible generation image** (string, default: None): Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored. model** (string, default: dev): Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps. width** (integer, default: None): Width of generated image. Only works if aspect_ratio is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation height** (integer, default: None): Height of generated image. Only works if aspect_ratio is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation go_fast** (boolean, default: False): Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16 extra_lora** (string, default: None): Load LoRA weights. Supports Replicate models in the format <owner>/<username> or <owner>/<username>/<version>, HuggingFace URLs in the format huggingface.co/<owner>/<model-name>, CivitAI URLs in the format civitai.com/models/<id>[/<model-name>], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars' lora_scale** (number, default: 1): Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora. megapixels** (string, default: 1): Approximate number of megapixels for generated image How to Use Set up your Replicate API key in the workflow Configure the required parameters for your use case Run the workflow to generate other content Access the generated output from the final node API Reference Model: citoreh/nazanin API Endpoint: https://api.replicate.com/v1/predictions Requirements Replicate API key n8n instance Basic understanding of other generation parameters
by Yaron Been
Settyan Flash V2.0.0 Beta.9 AI Generator Description None Overview This n8n workflow integrates with the Replicate API to use the settyan/flash-v2.0.0-beta.9 model. This powerful AI model can generate high-quality other content based on your inputs. Features Easy integration with Replicate API Automated status checking and result retrieval Support for all model parameters Error handling and retry logic Clean output formatting Parameters Required Parameters prompt** (string): Prompt for generated image. If you include the trigger_word used in the training process you are more likely to activate the trained object, style, or concept in the resulting image. Optional Parameters mask** (string, default: None): Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored. seed** (integer, default: None): Random seed. Set for reproducible generation image** (string, default: None): Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored. model** (string, default: dev): Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps. width** (integer, default: None): Width of generated image. Only works if aspect_ratio is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation height** (integer, default: None): Height of generated image. Only works if aspect_ratio is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation go_fast** (boolean, default: False): Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16 extra_lora** (string, default: None): Load LoRA weights. Supports Replicate models in the format <owner>/<username> or <owner>/<username>/<version>, HuggingFace URLs in the format huggingface.co/<owner>/<model-name>, CivitAI URLs in the format civitai.com/models/<id>[/<model-name>], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars' lora_scale** (number, default: 1): Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora. megapixels** (string, default: 1): Approximate number of megapixels for generated image How to Use Set up your Replicate API key in the workflow Configure the required parameters for your use case Run the workflow to generate other content Access the generated output from the final node API Reference Model: settyan/flash-v2.0.0-beta.9 API Endpoint: https://api.replicate.com/v1/predictions Requirements Replicate API key n8n instance Basic understanding of other generation parameters
by Yaron Been
Spuuntries Ilearnmate Icts AI Generator Description None Overview This n8n workflow integrates with the Replicate API to use the spuuntries/ilearnmate-icts model. This powerful AI model can generate high-quality other content based on your inputs. Features Easy integration with Replicate API Automated status checking and result retrieval Support for all model parameters Error handling and retry logic Clean output formatting Parameters Optional Parameters seed** (integer, default: None): Seed for reproducibility of example generation and vector training. Set to 0 for random behavior. num_examples_per_side** (integer, default: 3): Number of descriptive examples to generate for each side of the contrast. More examples might lead to better vectors but will increase generation time. attributes_to_generate** (string, default: girly,modestly,verbose,happy): Comma-separated list of attributes for which to generate control vectors (e.g., 'girly,modestly,verbose,happy') How to Use Set up your Replicate API key in the workflow Configure the required parameters for your use case Run the workflow to generate other content Access the generated output from the final node API Reference Model: spuuntries/ilearnmate-icts API Endpoint: https://api.replicate.com/v1/predictions Requirements Replicate API key n8n instance Basic understanding of other generation parameters
by Calistus Christian
Overview Receive a URL via Webhook, submit it to urlscan.io, wait ~30 seconds for artifacts (e.g., screenshot), then email a clean summary with links to the result page, screenshot, and API JSON. What this template does Ingests a URL from a POST request. Submits the URL to urlscan.io and captures the scan UUID. Waits 30s** to give urlscan time to generate the screenshot and result artifacts. Sends a formatted HTML email via Gmail with all relevant links. Nodes used Webhook** (POST /urlscan) urlscan.io → Perform a scan** Wait** (30 seconds; configurable) Gmail → Send a message** Input { "url": "https://example.com" }
by Yaron Been
Creativeathive Lemaar Door Urban AI Generator Description None Overview This n8n workflow integrates with the Replicate API to use the creativeathive/lemaar-door-urban model. This powerful AI model can generate high-quality other content based on your inputs. Features Easy integration with Replicate API Automated status checking and result retrieval Support for all model parameters Error handling and retry logic Clean output formatting Parameters Required Parameters prompt** (string): Prompt for generated image. If you include the trigger_word used in the training process you are more likely to activate the trained object, style, or concept in the resulting image. Optional Parameters mask** (string, default: None): Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored. seed** (integer, default: None): Random seed. Set for reproducible generation image** (string, default: None): Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored. model** (string, default: dev): Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps. width** (integer, default: None): Width of generated image. Only works if aspect_ratio is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation height** (integer, default: None): Height of generated image. Only works if aspect_ratio is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation go_fast** (boolean, default: False): Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16 extra_lora** (string, default: None): Load LoRA weights. Supports Replicate models in the format <owner>/<username> or <owner>/<username>/<version>, HuggingFace URLs in the format huggingface.co/<owner>/<model-name>, CivitAI URLs in the format civitai.com/models/<id>[/<model-name>], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars' lora_scale** (number, default: 1): Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora. megapixels** (string, default: 1): Approximate number of megapixels for generated image How to Use Set up your Replicate API key in the workflow Configure the required parameters for your use case Run the workflow to generate other content Access the generated output from the final node API Reference Model: creativeathive/lemaar-door-urban API Endpoint: https://api.replicate.com/v1/predictions Requirements Replicate API key n8n instance Basic understanding of other generation parameters
by Yaron Been
Creativeathive Lemaar Door Mockedup AI Generator Description None Overview This n8n workflow integrates with the Replicate API to use the creativeathive/lemaar-door-mockedup model. This powerful AI model can generate high-quality other content based on your inputs. Features Easy integration with Replicate API Automated status checking and result retrieval Support for all model parameters Error handling and retry logic Clean output formatting Parameters Required Parameters prompt** (string): Prompt for generated image. If you include the trigger_word used in the training process you are more likely to activate the trained object, style, or concept in the resulting image. Optional Parameters mask** (string, default: None): Image mask for image inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored. seed** (integer, default: None): Random seed. Set for reproducible generation image** (string, default: None): Input image for image to image or inpainting mode. If provided, aspect_ratio, width, and height inputs are ignored. model** (string, default: dev): Which model to run inference with. The dev model performs best with around 28 inference steps but the schnell model only needs 4 steps. width** (integer, default: None): Width of generated image. Only works if aspect_ratio is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation height** (integer, default: None): Height of generated image. Only works if aspect_ratio is set to custom. Will be rounded to nearest multiple of 16. Incompatible with fast generation go_fast** (boolean, default: False): Run faster predictions with model optimized for speed (currently fp8 quantized); disable to run in original bf16 extra_lora** (string, default: None): Load LoRA weights. Supports Replicate models in the format <owner>/<username> or <owner>/<username>/<version>, HuggingFace URLs in the format huggingface.co/<owner>/<model-name>, CivitAI URLs in the format civitai.com/models/<id>[/<model-name>], or arbitrary .safetensors URLs from the Internet. For example, 'fofr/flux-pixar-cars' lora_scale** (number, default: 1): Determines how strongly the main LoRA should be applied. Sane results between 0 and 1 for base inference. For go_fast we apply a 1.5x multiplier to this value; we've generally seen good performance when scaling the base value by that amount. You may still need to experiment to find the best value for your particular lora. megapixels** (string, default: 1): Approximate number of megapixels for generated image How to Use Set up your Replicate API key in the workflow Configure the required parameters for your use case Run the workflow to generate other content Access the generated output from the final node API Reference Model: creativeathive/lemaar-door-mockedup API Endpoint: https://api.replicate.com/v1/predictions Requirements Replicate API key n8n instance Basic understanding of other generation parameters