by Krzysztof Kuzara
Who is this for? This workflow is perfect for anyone looking to automate the process of replacing variables in Google Docs with data from form. What problem does this workflow solve? This workflow automates the process of filling Google Docs templates with data coming from n8n forms or other variables. It’s especially useful for generating documents like contracts, invoices, or reports quickly and efficiently without manual intervention. What does this workflow do? The workflow receives data from a form in n8n. It uses the form data to replace the corresponding variables (e.g., {{example_variable}}) in a Google Docs template. The document is then generated with the new values, ready for further use, such as sending or archiving. How to set up this workflow? Prepare the template: Create a Google Docs template with variables in the {{variable}} format that you want to replace with form data. Modify the variables in the n8n form: Make sure the form fields correspond to the variables you want to replace in the Google Docs template. Connect to Google Docs: Set up the connection to Google Docs in n8n using the appropriate authentication credentials. Test the workflow: Run the workflow to ensure that the form data correctly replaces the variables in the Google Docs template. How to customize this workflow to your needs? Change the data source: You can modify the form or other data sources (e.g., API) from which the replacement values will be fetched. Customize the Google Docs template: Adapt the template to include additional fields for replacement as needed. Integrate with other applications: You can expand the workflow to include actions like sending the generated document via email, saving it to Google Drive, or passing it to other systems.
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 Sateesh
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. AI-Powered LinkedIn Publishing via Telegram Workflow Transform your LinkedIn presence with this intelligent n8n workflow that converts simple Telegram messages into professional LinkedIn posts through AI-powered content generation and approval workflows. 🎯 Who Is This For? Content Creators & Influencers** seeking to maintain consistent LinkedIn presence Marketing Professionals** managing multiple client accounts Business Owners** wanting to automate thought leadership content Social Media Managers** streamlining content workflows Entrepreneurs** maximizing content efficiency while maintaining quality 🚀 Benefits Time Efficiency**: Reduces content creation time by 80-90% Quality Consistency**: Maintains professional standards across all posts Content Diversity**: Leverages multiple sources for rich, varied content Real-Time Relevance**: Incorporates latest industry trends and news Approval Control**: Human oversight ensures brand alignment Scalability**: Handles multiple users and high-volume content creation 🔧 Core Features Smart Content Classification Multi-Input Processing**: Handles URLs, topics, direct content, or combinations Intelligent Routing**: Automatically determines whether to scrape, search, or generate directly Context Preservation**: Maintains original user intent throughout the process Advanced Content Gathering Web Scraping**: Firecrawl integration for extracting article content from URLs Real-Time Search**: Brave Search API for latest industry trends and news Content Synthesis**: Merges multiple sources into coherent, valuable insights AI-Powered Content Generation Google Gemini Integration**: Creates professional, LinkedIn-optimized posts Platform-Specific Formatting**: Mobile-friendly paragraphs, engaging hooks, strategic CTAs SEO Optimization**: Relevant hashtags and keyword integration Character Management**: Ensures posts stay within LinkedIn's 2800 character limit Interactive Approval System Telegram Preview**: Rich preview with post analytics and formatting Action Buttons**: Approve, Edit, or Reject with single-click convenience Edit Workflow**: AI-powered rewriting based on user feedback Real-Time Updates**: Instant feedback and status notifications Comprehensive Content Tracking Google Sheets Integration**: Complete audit trail of all posts and content metrics Content Analytics**: Character counts, hashtag usage, source attribution User Authorization**: Secure access control with authorized user validation Post Management**: Unique ID generation for tracking and reference 🔄 How It Works Message Reception: Secure Telegram trigger with user validation Content Classification: AI analyzes input type and extracts actionable elements Dynamic Routing: Intelligent branching based on content requirements: URL Path: Web scraping → content extraction → processing Topic Path: Web search → latest information gathering → synthesis Direct Path: Immediate processing for ready-to-post content Content Synthesis: Merges all gathered information into comprehensive context AI Generation: Creates LinkedIn-optimized post with professional formatting Interactive Approval: Telegram preview with approval workflow Publishing: Direct LinkedIn posting upon approval Content Logging: Complete tracking in Google Sheets 📈 Use Cases Daily Industry Updates: Transform news URLs into thought leadership posts Content Repurposing: Convert articles and research into LinkedIn insights Trend Commentary: Generate posts about trending topics with real-time data Educational Content: Create informative posts from technical documentation Personal Branding: Maintain consistent professional presence with minimal effort 🛠️ Technical Requirements Required Community Nodes Install these community nodes in your n8n instance: Brave Search Integration @brave/n8n-nodes-brave-search Firecrawl Web Scraping @mendable/n8n-nodes-firecrawl LangChain AI Integration @n8n/n8n-nodes-langchain APIs & Services Required Google Gemini (Content generation and classification) Firecrawl API (Web scraping) Brave Search API (Real-time search) Telegram Bot API (Interface and notifications) LinkedIn API (Content publishing) Google Sheets API (Content tracking and logging) 🔑 Setup Guide 1. Telegram Bot Setup Search for @BotFather on Telegram Send /newbot and follow prompts Copy the bot token Send /setprivacy to BotFather and set to Disable 2. Google Gemini API Visit Google AI Studio Sign in and click "Get API Key" → "Create API Key" Copy your API key Free tier: 60 requests per minute 3. Firecrawl API Visit Firecrawl.dev Sign up and go to Dashboard → API Keys Copy your API key Free tier: 500 pages/month 4. Brave Search API Visit Brave Search API Sign up and create application Copy subscription key Free tier: 1,000 queries/month 5. LinkedIn API Visit LinkedIn Developers Create app with required details Request "Share on LinkedIn" product Copy Client ID and Client Secret Add redirect URL: https://your-n8n-domain.com/rest/oauth2-credential/callback 6. Google Sheets API Visit Google Cloud Console Enable Google Sheets API Create OAuth 2.0 Client ID Copy Client ID and Client Secret 🛠️ Installation Steps Phase 1: Preparation Install required community nodes Restart n8n after installation Create Google Sheet for logging Set up Telegram Bot Phase 2: Import and Configure Import workflow JSON in n8n Configure all API credentials Test each connection Phase 3: Customization Update authorized user ID in "Authorized Telegram Users" node Configure Google Sheets document ID Test Telegram connection Phase 4: Testing Test with different input types: URL only: https://example.com/article Topic only: artificial intelligence trends Mixed: AI trends https://example.com/ai-news 🎨 Customization Options Content Personalization Modify AI prompts to match your brand voice Adjust content length and formatting preferences Customize hashtag strategies and CTA approaches Configure approval workflow steps Source Integration Add additional search engines or content sources Integrate with RSS feeds or news APIs Connect to internal knowledge bases Customize web scraping parameters 🔒 Security Features User Authorization**: Whitelist-based access control Secure Token Management**: Encrypted API key handling Data Privacy**: Secure processing of scraped content Audit Trail**: Complete logging of all user interactions 🔮 Future Expansion Possibilities This workflow serves as a foundation for: Performance Analytics Module**: LinkedIn engagement tracking Content Optimization Engine**: A/B testing and refinement Multi-Platform Publishing**: Expand to Twitter, Facebook, Instagram Advanced Scheduling**: Time-optimized posting Content Series Management**: Automated follow-ups 💡 Why Choose This Workflow This represents a complete LinkedIn content automation solution that maintains quality and personal touch while dramatically reducing time and effort. Perfect for professionals who want to maximize LinkedIn impact without sacrificing content quality or spending hours on manual creation. Ready to transform your LinkedIn presence? Install this workflow and start automating your professional content creation today!
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
by Piotr Sobolewski
How it works This advanced workflow transforms your long-form audio content (like podcast episodes or webinar recordings) into digestible, ready-to-use marketing assets. It's designed for podcasters, content creators, and marketers who want to maximize their content's reach. It automatically: Takes a full transcript of your audio/video content as input. Generates a concise, comprehensive summary of the episode using advanced AI. Extracts a list of key topics and keywords from the transcript, perfect for SEO, tagging, and content categorization. Delivers the summary and keywords directly to your inbox or a connected tool for easy access. Streamline your content repurposing pipeline and unlock new value from your audio and video assets with intelligent automation! Set up steps Setting up this powerful workflow typically takes around 20-30 minutes, as it involves multiple AI steps. You'll need to: Obtain API keys for your preferred AI service (e.g., OpenAI, Google AI). Have access to a method for generating transcripts from your audio/video (e.g., manually pasting, or using a separate transcription service like AssemblyAI, Whisper, etc.). Connect your preferred email service (e.g., Gmail) to receive the output. All detailed setup instructions and specific configuration guidance are provided within the workflow itself using sticky notes.