by MC Naveen
I wanted a system to monitor website content changes and notify me. So I made it using n8n. Especially my competitor blogs. I wanted to know how often they are posting new articles. (I used their sitemap.xml file) (The below workflow may vary) In the Below example, I used HackerNews for example. Explanation: First HTTP Request node crawls the webpage and grabs the website source code Then wait for x minutes Again, HTTP Node crawls the webpage If Node compares both results are equal if anything is changed. It’ll go to the false branch and notify me in telegram. Workflow: Sample Response:
by Hubschrauber
Summary This template uses the item handling nodes, and expression-support in n8n, without using a Code node, to extract multiple attachments from a GMail (trigger input) message/event, and (conditionally) upload each of them to Google Drive. Note: There is another template titled Get Multiple Attachments from Gmail and upload them to GDrive that does basically the same thing, but it uses a Code node. Details Using Split Out instead of Code The “secret” to how this works is that n8n supports a special input field name $binary that references the entire set of (multiple) binary data sub-elements in a single input item. It may look like an expression, but in this case it is a “fixed” (literal) value used as the Fields to Split Out parameter value. Dealing with names that are prefixed/suffixed with an Index The next challenge with multiple attachments from a GMail message is that each one is still assigned different name like "attachment_0", "attachment_1", etc. This makes it tricky to reference them in a generic way. However, once n8n splits the items out, the binary in each item is always the first (i.e. index-zero / [0]) and ONLY key/value. So, that makes it possible get the key-name and attributes of the corresponding value indirectly with some clever expression syntax. Input Data Field Name -> Expression: {{ $binary.keys()[0] }} - This returns the name, regardless of whether it is "attachment_0", "attachment_1", or whatever else. Attachment file name: -> Expression: {{ $binary.values()[0].fileName }} Attachment file name extension: -> Expression: {{ $binary.values()[0].fileExtension }} Attachment file type: -> Expression: {{ $binary.values()[0].fileType }} Attachment file size (e.g. string "100 kB"): -> Expression: {{ $binary.values()[0].fileSize }} Attachment file size (numeric): -> Expression: {{ $binary.values()[0].fileSize.split(' ')[0].toNumber() }} Attachment mime type: -> Expression: {{ $binary.values()[0].mimeType }} Attachment id (storage GUID): -> Expression: {{ $binary.values()[0].id }} Flow Control Since each of the attachments becomes a single item, it is relatively straightforward to introduce other n8n nodes like If, Switch, or Filter and route each single attachment item into different workflow paths. The template demonstrates how each attachment binary could be routed based on its file size, as an example.
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 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 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 Marth
How It Works ⚙️ This workflow is designed to streamline your monthly financial reporting, turning raw transaction data into actionable insights automatically. Here's a step-by-step breakdown of its operation: Trigger (Cron Node): ⏰ The workflow kicks off automatically on a pre-defined schedule, typically the 1st day of every month, ensuring timely report generation without manual intervention. Get Finance Transactions (Google Sheets): 📊 The first functional node connects to your designated Google Sheet. It reads all the transaction data from the specified range (e.g., 'FinanceSummary!A:E'), acting as the primary data input for the report. Filter Previous Month Transactions (Function): 🧹 Once the data is retrieved, this custom JavaScript function meticulously filters out only those transactions that occurred in the complete previous month. This ensures your report is always focused on the most relevant, recently concluded period. Generate AI Financial Insights (OpenAI): 🧠 The filtered transaction data is then passed to OpenAI's GPT-4 model. Here, the AI acts as your personal finance assistant, analyzing the data to: Calculate the total income. Calculate the total expense. Generate 3 concise, key financial insights in bullet points, helping you quickly grasp the financial health and trends. Send Monthly Finance Report Email (Gmail): 📧 Finally, all the processed information comes together. This node constructs a comprehensive email, embedding: A table summarizing all the previous month's transactions. The valuable AI-generated total income, total expense, and key insights. The email is then automatically sent to your designated finance recipients, delivering the report directly to their inbox. Set Up Steps 🚀 Follow these steps carefully to get your "Finance Monthly Report with AI Insight" 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 provided workflow JSON code. Configure Credentials: Google Sheets Node ("1. Get Finance Transactions"): Click on this node. Under 'Authentication', select your existing Google Sheets OAuth2 credential or click 'Create New' to set one up. Important: Replace <YOUR_GOOGLE_SHEET_ID_HERE> in the 'Sheet ID' field with the actual ID of your Google Sheet. OpenAI Node ("3. Generate AI Financial Insights"): Click on this node. Under 'Authentication', select your existing OpenAI API Key credential or create a new one if you haven't already. Gmail Node ("4. Send Monthly Finance Report Email"): Click on this node. Under 'Authentication', select your existing Gmail OAuth2 credential or create a new one. Customize Email Details: Gmail Node ("4. Send Monthly Finance Report Email"): Replace <YOUR_SENDER_EMAIL_HERE> with the email address you want the report to be sent from. Replace <YOUR_RECIPIENT_EMAIL_HERE> with the email address(es) you want the report to be sent to (multiple emails can be separated by commas). You can also adjust the 'Subject' if needed. Add & Configure Cron Trigger: Click the '+' icon at the very beginning of the workflow (where it says "first step..."). Search for "Cron" and select the 'Cron' node. Connect: Drag a connection from the Cron node to "1. Get Finance Transactions (Google Sheets)". Schedule: Configure the Cron node to your desired monthly schedule. For example: Set 'Mode' to 'Every Month'. Set 'On Day of Month' to '1' (to run on the first day of each month). Set 'At Time' to a specific time (e.g., '09:00' for 9 AM). Review and Activate: Thoroughly review all node configurations to ensure all placeholders 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 monthly finance report is now live! Troubleshooting Tip: If the workflow fails, check the 'Executions' tab in n8n for detailed error messages. Common issues include incorrect sheet IDs, invalid API keys, or data format mismatches in your Google
by Dahiana
Monitor website performance with PageSpeed Insights and save to Google Sheets with alerts This n8n template automatically monitors website performance using Google's PageSpeed Insights API, compiles detailed reports, and tracks performance trends over time in Google Sheets. Use cases: Agency client monitoring, competitor analysis, performance regression detection, SEO reporting, site migration monitoring, A/B testing performance impact, and maintaining performance SLAs. Who's it for Digital agencies monitoring client websites SEO professionals tracking site performance DevOps teams maintaining performance SLAs Business owners wanting automated site monitoring How it works Automated Testing:** Scheduled audits of multiple websites using PageSpeed Insights API Core Web Vitals:** Tracks LCP, FID, CLS, and overall performance scores Historical Tracking:** Maintains performance history for trend analysis Alert System:** Sends notifications when performance drops below thresholds Detailed Reporting:** Captures specific recommendations and optimization opportunities Two Workflow Paths Scheduled Audit: Automatically tests all URLs from Google Sheet on schedule On-Demand Testing: Webhook endpoint for immediate single-URL testing How to set up Get a free PageSpeed Insights API key from Google Cloud Console Create Google Sheet with columns: URL, Site Name, Category, Alert Threshold, Last_Processed_Date and Device. Set up Google Sheets API credentials Configure notification preferences (Slack, email, etc.) Set audit schedule (daily, weekly, or custom) Define performance thresholds for alerts Requirements Google PageSpeed Insights API key (free) Google Sheets API access n8n instance (cloud or self-hosted) Optional: Slack/email for notifications Google Sheet Structure Input Sheet ("sites"): URL, Site_Name, Category, Alert_Threshold, Last_Processed_Date and Device. Results Sheet ("audit_results"): Date, URL, Site_Name, Device, Performance_Score, LCP, FID, CLS, Recommendations, Full_Report_URL API Usage (On-Demand) POST to webhook: { "url": "https://example.com", "site_name": "Example Site", "alert_threshold": 75 } How to customize Add custom performance thresholds per site Include additional metrics (accessibility, SEO, best practices) Connect to other dashboards (Data Studio, Grafana) Add competitor benchmarking Integrate with project management tools for issue tracking Set up different notification channels based on severity Sample Google Sheet Included
by Websensepro
Overview Stop struggling with content creation for your e-commerce store. This workflow acts as your automated AI Content Marketer, instantly transforming your Shopify product details into high-quality, SEO-optimized blog posts. It handles everything from reading product data to writing the article and uploading it directly to your store as a draft. What this workflow does Fetches Product Data: Automatically pulls product titles and descriptions directly from your Shopify store (configurable limit). Data Logging: Backs up the raw product data into Google Sheets for record-keeping before processing. AI SEO Writing: Uses a powerful LLM (via OpenRouter/DeepSeek) to write a complete, engaging blog post based on the product's features. It generates an SEO-friendly title and formats the body content in clean HTML (headings, bullet points, etc.). Smart Parsing: A custom Code node ensures the AI's output is strictly formatted as JSON, separating the Blog Title from the Blog Content to prevent errors. Auto-Drafting in Shopify: Uploads the generated article directly to your specific Shopify Blog ID as a "Draft" (so you can review it before publishing). Email Notification: Sends a confirmation email via Gmail to let you know your new blog posts are ready for review. Setup Requirements To run this workflow, you will need to set up credentials in n8n for the following services: Shopify Admin API: To fetch products and create articles. (You will need your Shop Name and an Access Token). OpenRouter (or OpenAI): To power the AI Agent. The template is configured for DeepSeek via OpenRouter, but can be swapped for OpenAI. Google Sheets: To log product data and generated blog content. Gmail: To send the completion notification. How to use Configure Variables: Double-click the "Variables" node (Set node) at the start of the workflow. Enter your shop name (e.g., my-store from my-store.myshopify.com) and your blogId (found in the URL when viewing your blog in Shopify Admin). Connect Google Sheets: Open the Google Sheets nodes and map them to a sheet in your Drive. Ensure your sheet has columns for ID, Title, and Description. Select AI Model: In the Chat Model node, ensure your API key is connected (OpenRouter is used by default for cost-efficiency). Run: Execute the workflow. It will process your products and populate your Shopify Blog with new drafts automatically. Video Tutorial Watch the full setup guide here: Guide
by ConnectSafely
Rewrite viral LinkedIn posts in your voice with AI and Telegram approval using Google Gemini Who's it for This workflow is designed for LinkedIn creators, personal brand builders, thought leaders, and content marketers who want to consistently create engaging content without starting from scratch. Perfect for professionals who admire viral posts from others but want to adapt those ideas to their own unique voice and style. If you're struggling to maintain a consistent posting schedule, looking for content inspiration, or want to repurpose trending ideas while keeping your authentic voice, this automation handles the creative heavy lifting while giving you full control over what gets published. How it works The workflow transforms viral LinkedIn posts into personalized content that matches your writing style, complete with AI-generated images, all controlled through Telegram. The process flow: Send any LinkedIn post URL to your Telegram bot Security check validates your Telegram user ID ConnectSafely.ai scrapes the original post content and engagement metrics Your custom persona profile is loaded (tone, phrases, formatting preferences) Google Gemini AI rewrites the post to match YOUR voice Gemini generates a professional, on-brand image for the post Preview is sent to Telegram for your review Approve or reject with a simple reply On approval, the post goes live on LinkedIn automatically Setup steps Step 1: Create a Telegram Bot Open Telegram and search for @BotFather Send /newbot and follow the prompts to create your bot Save the API token provided by BotFather Get your Telegram User ID by messaging @userinfobot Step 2: Configure Telegram Credentials in n8n Go to Credentials → Add Credential → Telegram API Paste your bot token from BotFather Save the credential Update all Telegram nodes to use this credential Step 3: Set Up Security Check Open the 🔒 Security Check node Replace YOUR_TELEGRAM_USER_ID with your actual Telegram user ID This ensures only YOU can trigger the workflow Step 4: Configure ConnectSafely.ai API Sign up at ConnectSafely.ai Navigate to Settings → API Keys in your dashboard Generate a new API key In n8n, go to Credentials → Add Credential → ConnectSafely API Paste your API key and save Connect this credential to the 🔍 Scrape LinkedIn Post node Step 5: Configure Google Gemini API Go to Google AI Studio Create or select a project Generate an API key In n8n, go to Credentials → Add Credential → Google Gemini (PaLM) API Paste your API key and save Connect this credential to both: Google Gemini Chat Model node Generate an image node Step 6: Connect Your LinkedIn Account In n8n, go to Credentials → Add Credential → LinkedIn OAuth2 API Follow the OAuth flow to connect your LinkedIn account Connect this credential to the Create LinkedIn Post node Update the person parameter with your LinkedIn Person ID (URN) Step 7: Customize Your Persona Open the 👤 Load Your Persona node Edit the PERSONA object to match YOUR writing style: Update name with your name Modify expertiseAreas with your topics Adjust commonPhrases with phrases you actually use Set preferredEmojis to your favorites Customize styleNotes to capture your unique voice Step 8: Activate the Workflow Save your workflow Toggle the workflow to Active Your Telegram bot is now ready to receive LinkedIn URLs Customization Persona Customization The 👤 Load Your Persona node is where you define your unique voice. Key areas to customize: | Field | Description | Example | |-------|-------------|---------| | tone | Overall communication style | "Professional yet approachable, data-driven" | | voice | Perspective and personality | "First-person, authentic, vulnerable" | | formatting | Structure preferences | "Short paragraphs, emoji bullets, line breaks" | | hooks | Opening style | "Start with contrarian takes or personal stories" | | expertiseAreas | Your niche topics | ["SaaS growth", "Leadership", "Remote work"] | | commonPhrases | Signature expressions | ["Here's the truth:", "I learned this the hard way:"] | Image Generation The 📝 Create Image Prompt node generates the image prompt. Modify the style parameters to match your brand: Current style**: Modern, clean, corporate, vector art Customize**: Change to photography, illustrations, or abstract visuals Post Length In the persona configuration, adjust postLength: "short" - Quick insights (under 500 characters) "medium" - Standard posts (500-1500 characters) "long" - Deep dives (1500-3000 characters) AI Model Selection The workflow uses gemini-2.5-pro for text. You can switch to other models in the Google Gemini Chat Model node based on your needs. Requirements | Requirement | Details | |-------------|---------| | n8n Version | 1.0+ recommended | | Telegram Bot | Created via @BotFather | | ConnectSafely.ai Account | API key required | | Google AI Studio Account | Gemini API key required | | LinkedIn Account | OAuth2 connected in n8n | | Community Node | n8n-nodes-connectsafely-ai (self-hosted only) | ⚠️ Note: This workflow uses the ConnectSafely community node, which requires a self-hosted n8n instance. Use cases Content Repurposing**: Transform competitor or industry leader posts into your own perspective Consistent Posting**: Maintain a regular posting schedule without content creation burnout Style Consistency**: Ensure every post matches your established personal brand Trend Riding**: Quickly create content around viral topics while they're still relevant A/B Testing**: Test different approaches by approving or rejecting variations Troubleshooting Common Issues & Solutions Issue: Bot not responding to messages Solution**: Verify the Telegram webhook is active; check the Telegram Trigger node is properly configured Issue: "Profile not found" from ConnectSafely.ai Solution**: Ensure the LinkedIn URL is complete and public. Some posts on private profiles can't be scraped Issue: Image generation fails Solution**: Verify your Gemini API key has access to image generation models. Check quota limits in Google AI Studio Issue: LinkedIn post fails to publish Solution**: Confirm your LinkedIn OAuth2 credentials are valid and haven't expired. Re-authorize if needed Issue: AI generates posts that don't match your style Solution**: Be more specific in your persona configuration. Add more example phrases and detailed style notes Issue: Security check blocks your messages Solution**: Double-check your Telegram User ID is correctly entered (must be a number, not username) Documentation & Resources Official Documentation ConnectSafely.ai Docs**: https://connectsafely.ai/docs Google Gemini API**: https://ai.google.dev/docs Telegram Bot API**: https://core.telegram.org/bots/api LinkedIn API**: https://docs.microsoft.com/linkedin/ Support ConnectSafely Support**: support@connectsafely.ai n8n Community**: https://community.n8n.io Connect With Us Stay updated with the latest automation tips, LinkedIn strategies, and platform updates: LinkedIn**: linkedin.com/company/connectsafelyai YouTube**: youtube.com/@ConnectSafelyAI-v2x Instagram**: instagram.com/connectsafely.ai Facebook**: facebook.com/connectsafelyai X (Twitter)**: x.com/AiConnectsafely Bluesky**: connectsafelyai.bsky.social Mastodon**: mastodon.social/@connectsafely Need Custom Workflows? Looking to build sophisticated LinkedIn automation workflows tailored to your business needs? Contact our team for custom automation development, strategy consulting, and enterprise solutions. We specialize in: Multi-channel engagement workflows AI-powered personalization at scale Lead scoring and qualification automation CRM integration and data synchronization Custom reporting and analytics pipelines