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 Nskha
An innovative N8N workflow that monitors cryptocurrency prices on Binance, identifies significant market movements, and sends customized alerts through Telegram. Ideal for traders and enthusiasts seeking real-time market insights. How It Works Trigger Options: Choose between a manual trigger or a scheduled trigger to start the workflow. Fetch Market Data: The 'Binance 24h Price Change' node retrieves the latest 24-hour price changes for cryptocurrencies from Binance. Identify Significant Changes: The 'Filter by 10% Change rate' node filters out cryptocurrencies with price changes of 10% or more. Aggregate Data: The 'Aggregate' node combines all significant changes into a single dataset. Format Data for Telegram: The 'Split By 1K chars' node formats this data into chunks suitable for Telegram's message size limit. Send Telegram Message: The 'Send Telegram Message' node broadcasts the formatted message to a specified Telegram chat. Set Up Steps Estimated Time**: About 1-5 minutes for setup. Initial Configuration**: Set up a Binance API connection (Optional) and your Telegram bot credentials. Customization**: Adjust the trigger according to your preference (manual or scheduled) and update the Telegram chat ID. Create Telegram bot steps**:- Setting up a Telegram bot and obtaining its token involves several steps. Here's a detailed guide: Start a Chat with BotFather: Open Telegram and search for "BotFather". This is the official bot that allows you to create new bots. Start a chat with BotFather by clicking on the "Start" button at the bottom of the screen. Create a New Bot: In the chat with BotFather, type /newbot and send the message. BotFather will ask you to choose a name for your bot. This is a display name and can be anything you like. Next, you'll need to choose a username for your bot. This must be unique and end in bot. For example, my_crypto_alert_bot. Receive Your Token: After you've set the name and username, BotFather will provide you with a token. This token is like a password for your bot, so keep it secure. The message will look something like this: Done! Congratulations on your new bot. You will find it at t.me/my_crypto_alert_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. Use this token to access the HTTP API: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 The token in this case is 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Test Your Bot: You can find your bot by searching for its username in Telegram. Start a chat with your bot and try sending it a message. Although it won't respond yet, this step is essential to ensure it's set up correctly. Use the Token in n8n: In your n8n workflow, when setting up the Telegram node, you'll be prompted to enter credentials. Choose to add new credentials and paste the token you received from BotFather. Get Your Chat ID: To send messages to a specific chat, you need to know the chat ID. The easiest way to find this is to first message your bot, then use a bot like @userinfobot to get your chat ID. Once you have the chat ID, you can configure it in the Telegram node in your n8n workflow. Finalize Your Workflow: With the bot token and chat ID set up in n8n, your Telegram notifications should work as intended in your workflow. Remember, keep your bot token secure and never share it publicly. If your token is compromised, you can always generate a new one by chatting with BotFather and selecting /token. Example result Keywords: n8n workflow, cryptocurrency market, Binance API, Telegram bot, price alert system, automated trading signals, market analysis `
by nepomuc
This flow migrates all repositories of a Gitlab group to a Gitea organization by triggering Gitea's integrated migration tool. Set up steps: Copy this workflow Create an empty Gitea-organization you want to migrate to. (The flow will skip all projects which have the same name of possibly already existing repos in the target Gitea organization.) Create an access token in your Gitea (https://gitea.example.com/user/settings/applications), set it up as a Header Auth with it's name being "Authorization" and value being "token [your-gitea-token]" and select it for the "Gitea:"-named nodes. Create a Personal access token in Gitlab (https://gitlab.com/-/user_settings/personal_access_tokens), create a Header Auth with name "PRIVATE-TOKEN" and value "[your-gitlab-token]" and select it for the "Gitlab:"-named node. Also keep the value of your Gitlab-token available for step 5. Edit the Set node right after the trigger node and set paste your personal access token in there as well as the names of the Gitlab source group and the Gitea target organization. Use the url-friendly version of their names by simply copy&pasting them from their URLs. Run the flow and enjoy the show :)
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 Joachim Hummel
This workflow automatically fetches PDF invoices from a Nextcloud folder (/Invoice/Incoming), sends them via email to a fixed recipient (invoice@example.com), sends a Telegram notification, and archives the file to /Invoice/2025/archive. Key Steps: Triggered daily at 8 AM Lists files in /Invoice/Incoming Filters for existing entries Downloads the file Sends the invoice via email Sends a Telegram message with filename Moves the file to archive π¦ Technologies used: Nextcloud SMTP Email Telegram Bot βοΈ Use case: Perfect for freelancers or small businesses to automate recurring invoice sending with minimal effort.
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 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