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 Muhammad Farooq Iqbal
This n8n template demonstrates how to automate the creation of high-quality visual content using AI. The workflow takes simple titles from a Google Sheets spreadsheet, generates detailed artistic prompts using AI, creates photorealistic images, and manages the entire process from data input to final delivery. Use cases are many: Perfect for digital marketers, content creators, social media managers, e-commerce businesses, advertising agencies, and anyone needing consistent, high-quality visual content for marketing campaigns, social media posts, or brand materials! Good to know The Gemini 2.0 Flash Exp image generation model used in this workflow may have geo-restrictions. The workflow processes one image at a time to ensure quality and avoid rate limiting. Each generated image maintains high consistency with the source prompt and shows minimal AI artifacts. How it works Automated Trigger: A schedule trigger runs every minute to check for new entries in your Google Sheets spreadsheet. Data Retrieval: The workflow fetches rows from your Google Sheets document, specifically looking for entries with "pending" status. AI Prompt Generation: Using Google Gemini, the workflow takes simple titles and transforms them into detailed, artistic prompts for image generation. The AI considers: Specific visual elements, styles, and compositions Natural poses, interactions, and environmental context Lighting conditions and mood settings Brand consistency and visual appeal Proper aspect ratios for different platforms Text Processing: A code node ensures proper JSON formatting by escaping newlines and maintaining clean text structure. Image Generation: Gemini's advanced image generation model creates photorealistic images based on the detailed prompts, ensuring high-quality, consistent results. File Management: Generated images are automatically uploaded to a designated folder in Google Drive with organized naming conventions. Public Sharing: Images are made publicly accessible with read permissions, enabling easy sharing and embedding. Database Update: The workflow completes by updating the Google Sheets with the generated image URL and changing the status from "pending" to "posted", creating a complete audit trail. How to use Setup: Ensure you have the required Google Sheets document with columns for ID, prompt, status, and imageUrl. Configuration: Update the Google Sheets document ID and folder IDs in the respective nodes to match your setup. Activation: The workflow is currently inactive - activate it in n8n to start processing. Data Input: Simply add new rows to your Google Sheets with titles and set status to "pending" - the workflow will automatically process them. Monitoring: Check the Google Sheets for updated status and image URLs to track progress. Requirements Google Gemini API** account for LLM and image generation capabilities Google Drive** for file storage and management Google Sheets** for data input and tracking n8n instance** with proper credentials configured Customizing this workflow Content Variations: Try different visual styles, seasonal themes, or trending designs by modifying the AI prompt in the LangChain agent. Output Formats: Adjust the aspect ratio or image specifications for different platforms (Instagram, Pinterest, TikTok, Facebook ads, etc.). Integration Options: Replace the schedule trigger with webhooks for real-time processing, or add notification nodes for status updates. Batch Processing: Modify the limit node to process multiple items simultaneously, though be mindful of API rate limits. Quality Control: Add additional validation nodes to ensure generated images meet quality standards before uploading. Analytics: Integrate with analytics platforms to track image performance and engagement metrics. This workflow provides a complete solution for automated visual content creation, perfect for businesses and creators looking to scale their visual content production while maintaining high quality and consistency across all marketing materials.
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 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