by Trung Tran
Free PDF Generator in n8n – No External Libraries or Paid Services > A 100% free n8n workflow for generating professionally formatted PDFs without relying on external libraries or paid converters. It uses OpenAI to create Markdown content, Google Docs to format and convert to PDF, and integrates with Google Drive and Slack for archiving and sharing, ideal for reports, BRDs, proposals, or any document you need directly inside n8n. Watch the demo video below: Who’s it for Teams that need auto-generated documents (reports, guides, checklists) in PDF format. Operations or enablement teams who want files archived in Google Drive and shared in Slack automatically. Anyone experimenting with LLM-powered document generation integrated into business workflows. How it works / What it does Manual trigger starts the workflow. LLM generates a sample Markdown document (via OpenAI Chat Model). Google Drive folder is configured for storage. Google Doc is created from the generated Markdown content. Document is exported to PDF using Google Drive. (Sample PDF generated from comprehensive markdown) PDF is archived in a designated Drive folder. Archived PDF is downloaded for sharing. Slack message is sent with the PDF attached. How to set up Add nodes in sequence: Manual Trigger OpenAI Chat Model (prompt to generate sample Markdown) Set/Manual input for Google Drive folder ID(s) HTTP Request or Google Drive Upload (convert to Google Docs) Google Drive Download (PDF export) Google Drive Upload (archive PDF) Google Drive Download (fetch archived file) Slack Upload (send message with attachment) Configure credentials for OpenAI, Google Drive, and Slack. Map output fields: data.markdown → Google Docs creation docId → PDF export fileId → Slack upload Test run to ensure PDF is generated, archived, and posted to Slack. Requirements Credentials**: OpenAI API key (or compatible LLM provider) Google Drive (OAuth2) with read/write permissions Slack bot token with files:write permission Access**: Write access to target Google Drive folders Slack bot invited to the target channel How to customize the workflow Change the prompt** in the OpenAI Chat Model to generate different types of content (reports, meeting notes, checklists). Automate triggering**: Replace Manual Trigger with Cron for scheduled document generation. Use Webhook Trigger to run on-demand from external apps. Modify storage logic**: Save both .md and .pdf versions in Google Drive. Use separate folders for drafts vs. final versions. Enhance distribution**: Send PDFs to multiple Slack channels or via email. Integrate with project management tools for automated task creation.
by Guillaume Duvernay
Go beyond basic AI-generated text and create articles that are well-researched, comprehensive, and credible. This template automates an advanced content creation process that mimics a professional writing team: it plans, researches, and then writes. Instead of just giving an AI a topic, this workflow first uses an AI "planner" to break the topic down into logical sub-questions. Then, it deploys an AI "researcher" powered by Linkup to search the web for relevant insights and sources for each question. Finally, this complete, sourced research brief is handed to a powerful AI "writer" to compose a high-quality article, complete with hyperlinks back to the original sources. Who is this for? Content marketers & SEO specialists:** Scale the production of well-researched, link-rich articles that are built for authority and performance. Bloggers & thought leaders:** Quickly generate high-quality first drafts on any topic, complete with a list of sources for easy fact-checking and validation. Marketing agencies:** Dramatically improve your content turnaround time by automating the entire research and first-draft process for clients. What problem does this solve? Adds credibility with sources:** Solves one of the biggest challenges of AI content by automatically finding and preparing to include hyperlinks to the web sources used in the research, just as a human writer would. Ensures comprehensive coverage:** The AI-powered "topic breakdown" step prevents superficial content by creating a logical structure for the article and ensuring all key aspects of a topic are researched. Improves content quality and accuracy:** The "research-first" approach provides the final AI writer with a rich brief of specific, up-to-date information, leading to more detailed and factually grounded articles than a simple prompt ever could. Automates the entire writing workflow:** This isn't just an AI writer; it's an end-to-end system that automates the planning, research, and drafting process, saving you hours of manual work. How it works This workflow orchestrates a multi-step "Plan, Research, Write" process: Plan (Decomposition): You provide an article title and guidelines via the built-in form. An initial AI call acts as a "planner," breaking down the main topic into an array of logical sub-questions. Research (Web Search): The workflow then loops through each of these sub-questions. For each one, it uses Linkup to perform a targeted web search, gathering multiple relevant insights and their source URLs. Consolidate (Brief Creation): All the sourced insights from the research phase are compiled into a single, comprehensive research brief. Write (Final Generation): This complete, sourced brief is handed to a final, powerful AI writer (e.g., GPT-5). Its instructions are clear: write a high-quality article based only on the provided research and integrate the source links as hyperlinks where appropriate. Setup Connect your Linkup account: In the Query Linkup for insights (HTTP Request) node, add your Linkup API key. We recommend creating a "Generic Credential" of type "Bearer Token" for this. Linkup's free plan is very generous and includes credits for ~1000 searches per month. Connect your AI provider: Connect your AI provider (e.g., OpenAI) credentials to the two Language Model nodes. For cost-efficiency, we recommend a smaller, faster model for Generate research questions and a more powerful, creative model for Generate the AI output. Activate the workflow: Toggle the workflow to "Active" and use the built-in form to enter an article title and guidelines to generate your first draft! Taking it further Control your sources:* For more brand-aligned or niche content, you can restrict the web search to specific websites by adding site:example.com OR site:anothersite.com to the query in the *Query Linkup for insights** node. Automate publishing:* Connect the final *Article result* node to a *Webflow* or *WordPress** node to automatically create a draft post in your CMS. Generate content in bulk:* Replace the *Form Trigger* with an *Airtable* or *Google Sheet** trigger to automatically generate a whole batch of articles from your content calendar. Customize the writing style:* Tweak the system prompt in the final *Generate the AI output** node to match your brand's specific tone of voice, add SEO keywords, or include calls-to-action.
by Davide
This workflow creates a voice AI assistant accessible via Telegram that leverages ElevenLabs* powerful voice synthesis technology. Users can either clone their own voice or transform their voice using pre-existing voice models, all through simple voice messages sent to a Telegram bot. *ONLY FOR STARTER, CREATOR, PRO PLAN This workflow allows users to: Clone their voice by sending a voice message to a Telegram bot (creates a new voice profile on ElevenLabs) Change their voice to a cloned voice and save the output to Google Drive For Best Results Important Considerations for Best Results: For optimal voice cloning via Telegram voice messages: 1. Recording Quality & Environment Record in a quiet room with minimal echo and background noise Use a consistent microphone position (10-15cm from mouth) Ensure clear audio without distortion or clipping 2. Content Selection & Variety Send 1 voice messages totaling 5-10 minutes of speech Include diverse vocal sounds, tones, and natural speaking cadence Use complete sentences rather than isolated words 3. Audio Consistency Maintain consistent volume, tone, and distance from microphone Avoid interruptions, laughter, coughs, or background voices Speak naturally without artificial effects or filters 4. Technical Preparation Ensure Telegram isn't overly compressing audio (use HQ recording) Record all messages in the same session with same conditions Include both neutral speech and varied emotional expressions How it works Trigger The workflow starts with a Telegram trigger that listens for incoming messages (text, voice notes, or photos). Authorization check A Code node checks whether the sender’s Telegram user ID matches your predefined ID. If not, the process stops. Message routing A Switch node routes the message based on its type: Text → Not processed further in this flow. Voice message → Sent to the “Get audio” node to retrieve the audio file from Telegram. Photo → Not processed further in this flow. Two main options From the “Get audio” node, the workflow splits into two possible paths: Option 1 – Clone voice The audio file is sent to ElevenLabs via an HTTP request to create a new cloned voice. The voice ID is returned and can be saved for later use. Option 2 – Voice changer The audio is sent to ElevenLabs for speech-to-speech conversion using a pre-existing cloned voice (voice ID must be set in the node parameters). The resulting audio is saved to Google Drive. Output Cloned voice ID (for Option 1). Converted audio file uploaded to Google Drive (for Option 2). Set up steps Telegram bot setup Create a bot via BotFather and obtain the API token. Set up the Telegram Trigger node with your bot credentials. Authorization configuration In the “Sanitaze” Code node, replace XXX with your Telegram user ID to restrict access. ElevenLabs API setup Get an API key from ElevenLabs. Configure the HTTP Request nodes (“Create Cloned Voice” and “Generate cloned audio”) with: API key in the Xi-Api-Key header. Appropriate endpoint URLs (including voice ID for speech-to-speech). Google Drive setup (for Option 2) Set up Google Drive OAuth2 credentials in n8n. Specify the target folder ID in the “Upload file” node. Voice ID configuration For voice cloning: The voice name can be customized in the “Create Cloned Voice” node. For voice changing: Replace XXX in the “Generate cloned audio” node URL with your ElevenLabs voice ID. Test the workflow Activate the workflow. Send a voice note from your authorized Telegram account to trigger cloning or voice conversion. 👉 Subscribe to my new YouTube channel. Here I’ll share videos and Shorts with practical tutorials and FREE templates for n8n. Need help customizing? Contact me for consulting and support or add me on Linkedin.
by Trung Tran
Beginner’s Tutorial: Manage Google Cloud Storage Buckets and Objects with n8n Watch the demo video below: Who’s it for Beginners who want to learn how to automate Google Cloud Storage (GCS) operations with n8n. Developers who want to combine AI image generation with cloud storage management. Anyone looking for a simple introduction to working with Buckets and Objects in GCS. How it works / What it does This workflow demonstrates end-to-end usage of Google Cloud Storage with AI integration: Trigger: Start manually by clicking Execute Workflow. Edit Fields: Provide input values (e.g., bucket name or image description). List Buckets: Retrieve all existing buckets in the project (branch: view only). Create Bucket: If needed, create a new bucket to store objects. Prompt Generation Agent: Use an AI model to generate a creative text prompt. Generate Image: Convert the AI-generated prompt into an image. Upload Object: Store the generated image as an object in the selected bucket. Delete Object: Clean up by removing the uploaded object if required. This shows the full lifecycle: Bucket → Object (Create/Upload/Delete) combined with AI image generation. How to set up Trigger the workflow: Use the When clicking Execute workflow node to start manually. Provide inputs: In Edit Fields, specify details such as bucket name or description text for the image. List buckets: Use the List Buckets node to see what exists. Create a bucket: Use Create Bucket if you want a new storage bucket. Generate prompt & image: The Prompt Generation Agent uses an OpenAI Chat Model to create an image prompt. The Generate an Image node turns this prompt into an actual image. Upload to bucket: Use Create Object to upload the generated image into your GCS bucket. Delete object (optional): Use Delete Object to remove the file from the bucket as a cleanup step. Requirements An active Google Cloud account with Cloud Storage API enabled. A Service Account Key (JSON) credential added in n8n for GCS. An OpenAI API Key configured in n8n for the prompt and image generation nodes. Basic familiarity with running workflows in n8n. How to customize the workflow Different object types:** Instead of images, upload PDFs, logs, or text files. Automatic cleanup:** Skip the delete step if you want objects to persist. Schedule trigger:** Replace manual execution with a weekly or daily schedule. Dynamic prompts:** Accept user input from a form or webhook to generate images. Multi-bucket management:** Extend the logic to manage multiple buckets across projects. Notifications:** Add a Slack/Email step after upload to notify your team with the object URL. ✅ By the end of this tutorial, you’ll understand how to: Work with Buckets (list, create). Work with Objects (upload, delete). Integrate AI image generation with Google Cloud Storage.
by Kevin Meneses
How it works This workflow takes a list of links from Google Sheets, visits each page, extracts the main text using Decodo, and creates a summary with the help of artificial intelligence. It helps you turn research articles or web pages into clear, structured insights you can reuse for your projects, content ideas, or newsletters. Input: A Google Sheet named input with one column called url. Output: Another Google Sheet named output, where all the processed data is stored: URL:** original article link Title:** article title Source:** website or domain Published Date:** publication date (if found) Main Topic:** main theme of the article Key Ideas:** three main takeaways or insights Summary:** short text summary Text Type:** type of content (e.g., article, blog, research paper) Setup steps Connect your Google Sheets account. Add your links to the input sheet. In the Decodo node, insert your API key. Configure the AI model (for example, Gemini). Run the workflow and check the results in the output sheet.
by Shun Nakayama
Auto-Audit SEO Traffic Drops with AI & GSC Automatically monitor your Google Search Console data to catch SEO performance drops before they become critical. This workflow identifies pages losing rankings and clicks, scrapes the live content, and uses AI to analyze the gap between "Search Queries" (User Intent) and "Page Content" (Reality). It then delivers actionable fixes—including specific Title rewrites and missing H2 headings—directly to Slack. Ideal for SEO managers, content marketers, and site owners who want a pro-level SEO consultant running 24/7 on autopilot. How it works Compare & Detect: Compares last month's GSC performance with the previous month to identify pages with declining traffic. Deep Dive: For each struggling page, it fetches the top search queries and scrapes the actual Title and H2 tags from your live website. AI Analysis: An AI Agent analyzes why the page is failing by comparing user intent vs. actual content. Report: Sends a "Consultant-style" report to Slack with quantitative data and specific improvement tasks (e.g., "Add this H2 heading"). Set up steps Configure: Open the 📝 Edit Me: Config node and enter your GSC Property URL (e.g., sc-domain:example.com). Connect Credentials: Google Search Console: To fetch performance data. OpenAI: To analyze content and generate ideas. Slack: To receive the weekly reports. Activate: Turn on the workflow to receive your SEO audit every Monday morning.
by Simeon Penev
Who’s it for Growth, marketing, sales, and founder teams that want a decision-ready Ideal Customer Profile (ICP)—grounded in their own site content. How it works / What it does On form submission* collects *Website URL* and *Business Name** and redirects to Google Drive Folder after the final node. Crawl and Scrape the Website Content* - crawls and scrape *20 pages** from the website. ICP Creator* builds a *Markdown ICP** with: A) Executive Summary B) One-Pager ICP C) Tiering & Lead Scoring D) Demand Gen & ABM Plays E) Evidence Log F) Section Confidence Facts vs. Inferences, confidence scores and tables. Markdown to Google Doc* converts Markdown to Google Docs batchUpdate requests. Then this is used in *Update a document** for updating the empty doc. Create a document* + *Update a document* generate *“ICP for <Business Name>”** in your Drive folder and apply formatting. How to set up 1) Add credentials: Firecrawl (Authorization header), OpenAI (Chat), Google Docs OAuth2. 2) Replace placeholders: {{API_KEY}}, {{google_drive_folder_id}}, {{google_drive_folder_url}}. 3) Publish and open the Form URL to test. Requirements Firecrawl API key • OpenAI API key • Google account with access to the target Drive folder. Resources Google OAuth2 Credentials Setup - https://docs.n8n.io/integrations/builtin/credentials/google/oauth-generic/ OpenAI API key - https://docs.n8n.io/integrations/builtin/credentials/openai/ Firecrawl API key - https://take.ms/lGcUp
by Easy8.ai
Auto-Generate SEO FAQ Answers from Google Sheets with OpenAI Intro/Overview This workflow automates the process of generating SEO-optimized FAQ answers using AI, pulling questions from a Google Sheet and writing answers back into the same sheet. It’s ideal for content marketers, SEO specialists, and digital teams looking to scale FAQ content generation with minimal manual input. By combining the power of Google Sheets, AI, and WordPress, the workflow transforms raw questions into structured, keyword-targeted answers tailored for specific audiences — ready for use on landing pages, blogs, or help centers, and automatically publishes them as WordPress posts. How it works Schedule Trigger**: Executes the workflow at a set interval to check for new or unprocessed questions in the Google Sheet. Get Questions from Sheet**: Reads from a specific Google Sheet, targeting columns for: Question (FAQ prompt) KW (target SEO keyword) Audience (intended reader) Article (desired WordPress post title) Filter**: Ensures only rows without an existing answer are processed (i.e., empty "Answer" column). Generate FAQ Answer**: Passes the question, keyword, and audience to the OpenAI Chat Model using a structured prompt to generate: A concise TL;DR-style summary A detailed, SEO-optimized markdown-formatted answer OpenAI Chat Model**: Utilizes GPT-4 Turbo with a controlled temperature (0.7) and token limit (1000) to produce structured, on-brand, keyword-optimized content. Parse FAQ Answer**: Extracts and formats the AI response into separate fields for writing back to the sheet. Update Sheet with Answer**: Writes the AI-generated answer into the Answer column of the same row in the source Google Sheet. WordPress Node**: Publishes each generated answer as a new WordPress post Uses “Create Post” operation Title: Taken from the Article column in the sheet Content: Uses the detailed AI-generated answer Requires valid WordPress credentials (REST API / Application Password) How to Use Importing the Workflow Download or import the workflow JSON into your n8n instance. Credential Setup Connect your Google Sheets credentials. Add your OpenAI API Key in the relevant node. Connect your WordPress credentials for content publishing. Node Assignment Update the following: Google Sheet ID Sheet range (ensure it includes all relevant columns) Timezone & Schedule Adjust the Schedule Trigger node to match your preferred time and frequency (e.g., every weekday at 9 AM). Testing Guidance Add a few sample FAQ entries in your sheet. Run the workflow manually to verify: Prompt quality Answer accuracy Proper sheet update Successful WordPress post creation Example Use Cases Marketing teams generating bulk FAQ content for landing pages SEO professionals creating keyword-optimized responses for user queries Agencies producing personalized FAQ sections for multiple client niches SaaS companies automating knowledge base content with targeted messaging Content teams publishing AI-generated FAQs directly to WordPress blogs Requirements ✅ Google Account with access to the target Google Sheet ✅ OpenAI API Key (GPT-4 Turbo or equivalent) ✅ WordPress account with REST API or Application Password access ✅ Google Sheet with the following columns: Question: The FAQ prompt KW: Target keyword for SEO Audience: Intended reader persona Article: Desired WordPress post title Answer: Output column (leave empty initially) Customization (Optional Section) Tone & Style**: Modify the system prompt to reflect your brand voice (e.g., friendly, expert, concise). Model**: Use a different AI model (e.g., Gemini, Claude, or OpenAI GPT-4.1). Output Format**: Adjust the markdown output to use different heading levels, bullet styles, or HTML if required. Audience Logic**: Expand the input options to fine-tune responses for more specific demographics or buyer personas. Multi-output Options**: Extend the workflow to post content to Notion, CMS, or documentation platforms alongside Google Sheets and WordPress. This automation accelerates content creation, automatically keeps your FAQ sections SEO-friendly, and publishes the results directly to WordPress — keeping your content pipeline running hands-free once deployed.
by Jose Bossa
Automated Social Media Video Posting 👥 Who's it for This workflow is perfect for content creators, social media managers, and businesses who want to schedule and automatically post videos 📹 to multiple platforms (Instagram, LinkedIn, TikTok) without manual effort. Save hours every week! ⏰ 🤖 What it does It automatically reads scheduled posts from Google Sheets, checks if it's the right time to post, downloads videos from Google Drive, uploads them to multiple social media platforms simultaneously, updates the posting status, and sends you a Telegram notification with the results. Complete hands-free social media management! 🚀 ⚙️ How it works ⏰ Schedule Trigger – Runs twice daily at 9 AM and 9 PM 📊 Google Sheets (Read) – Fetches posts with status "Listo para postear" (Ready to post) ⚙️ Code Node – Converts trigger time to readable Spanish format (e.g., "16 de Octubre a las 9 am") 🔍 If Condition – Checks if current time matches the scheduled post time in the sheet 📝 Format Drive Content – Extracts and organizes post data (Title, Copy, Video URL) 🆔 Social Media Account IDs – Prepares account identifiers (can be customized for specific accounts) 🎬 Upload a video – Posts video simultaneously to Instagram, LinkedIn, and TikTok using UploadPost API 📊 Google Sheets (Update) – Changes post status to "Posteado" (Posted) to avoid duplicates 📱 Telegram Notification – Sends detailed success report with URLs for each platform 📋 Requirements Google Sheets** with your content calendar Google Drive** to store your videos UploadPost API account** (supports Instagram, LinkedIn, TikTok): Click aquí 👉 UploadPost Telegram Bot** for notifications n8n instance** with required node packages Google Sheets Structure Your spreadsheet should have these columns: Title – Post title Copy – Post caption/description Video Link – Google Drive download URL Status – Post status ("Listo para postear" or "Posteado") Fecha.Hora – Scheduled time (format: "16 de Octubre a las 9 am") row_number – Auto-generated row identifier 🛠️ How to set up Create your Google Sheets calendar: Set up columns as specified above Use status "Listo para postear" for scheduled posts Format dates as "DD de Mes a las HH am/pm" (Spanish format) Upload videos to Google Drive: Get shareable download links (format: https://drive.google.com/uc?export=download&id=FILE_ID) Ensure videos meet platform requirements (duration, format, size) Configure UploadPost API: Create account and get API credentials Connect your Instagram, LinkedIn, and TikTok accounts Add credentials to the "Upload a video" node Set up Google Sheets credentials: Connect OAuth2 for both read and update operations Update documentId with your spreadsheet ID Verify sheet name matches (default: "Video") Configure Telegram notifications: Create a Telegram bot via @BotFather Get your chat ID Add credentials to "Send a text message" node Customize posting times: Modify Schedule Trigger hours (default: 9 AM and 9 PM) Times are in Santiago, Chile timezone (America/Santiago) Test the workflow: Create a test entry with current time Run manually to verify all connections work Check Telegram for success notification Activate the workflow ✅ 🎨 How to customize Change posting schedule:** Modify triggerAtHour values in Schedule Trigger (add more times if needed) Add more platforms:** Extend the platform array in "Upload a video" node (supports YouTube, Facebook, Twitter) Customize notification format:** Edit the Telegram message template to include/exclude information Change timezone:** Modify the timeZone parameter in the Code node (default: "America/Santiago") Filter by platform:** Add a filter node before upload to post only to specific platforms on certain days Add approval workflow:** Insert an approval step before posting using Telegram or Slack Multiple accounts per platform:** Modify "Social Media Account IDs" node to specify different account IDs Error handling:** Add error notification paths to alert you if uploads fail Batch posting:** Remove returnFirstMatch option to post multiple videos at once 💡 Pro Tips Time format must match exactly** between Schedule Trigger and Google Sheets for the workflow to trigger Videos should be optimized for each platform before upload (aspect ratio, length, file size) Test with a private account first before going live Keep video files under 100MB for best performance across platforms Use the row_number column to track and update specific posts The workflow runs twice daily, so schedule posts accordingly (9 AM or 9 PM slots) ⚠️ Important Notes Posts marked as "Posteado" won't be processed again (prevents duplicates) Video must be publicly accessible from the Google Drive link UploadPost API has rate limits depending on your plan Telegram notifications show success status and post URLs for each platform The Code node converts times to Spanish format - modify if you need different language/format
by ConnectSafely
Send Personalized DMs to LinkedIn Profile Visitors Who's it for This workflow is built for sales professionals, recruiters, founders, and networkers who want to automatically reach out to people who viewed their LinkedIn profile. Perfect for anyone who knows that profile visitors are warm leads but doesn't have time to manually check who visited, craft personalized messages, and send outreach one by one. If you're doing outbound sales, recruiting talent, building partnerships, or simply want to convert curiosity into conversations, this automation turns passive profile views into active outreach opportunities. How it works The workflow automatically identifies LinkedIn profile visitors and sends them personalized messages based on their connection status. The process flow: Scheduled trigger runs weekly (or manually) to fetch recent profile visitors ConnectSafely.ai API retrieves all visitors from the past 7 days Splits visitors into individual records for processing Checks Google Sheets to avoid messaging the same person twice Routes based on connection degree: 1st-degree connections → Sends a personalized DM 2nd/3rd-degree connections → Sends a connection request with message Logs all outreach to Google Sheets for tracking Waits between messages to maintain natural activity patterns Loop continues until all visitors are processed Setup steps Step 1: Configure ConnectSafely.ai API Credentials Obtain API Key Create an account at ConnectSafely.ai Connect your LinkedIn account in the dashboard Navigate to Settings → API Keys Generate a new API key Add Bearer Auth Credential in n8n Go to Credentials in n8n Click Add Credential → HTTP Bearer Auth Name it "ConnectSafely.ai API" Paste your API key Save the credential This credential is used by all three HTTP Request nodes: Fetch Profile Visitors, Send DM, and Send Connection Request. Step 2: Configure Google Sheets Integration 2.1 Create Your Tracking Sheet Create a new Google Sheet with the following columns: | Column Name | Description | |-------------|-------------| | Name | Visitor's full name | | Linkedin URL | Visitor's profile URL | | Status | Outreach status (DONE) | 2.2 Connect Google Sheets Account Go to Credentials → Add Credential → Google Sheets OAuth2 Follow the OAuth flow to connect your Google account Grant access to Google Sheets 2.3 Update All Google Sheets Nodes There are three Google Sheets nodes that need configuration: Check if Already Contacted - Looks up existing contacts Log DM Sent to Sheet - Records DMs sent Log Connection Request to Sheet - Records connection requests For each node: Open the node Replace YOUR_GOOGLE_SHEET_ID with your actual sheet ID (from the URL) Select the correct sheet name Save Step 3: Customize Your Message Templates The workflow includes two Code nodes with message templates that you must customize: For Connected Users (DMs) Open the "Generate DM for Connected User" node and update: // Sender footer - CUSTOMIZE THIS const footer = \n\n— Your Name; // Message bodies - CUSTOMIZE THESE const messages = [ "Noticed you recently checked out my profile... I've been working on [YOUR PRODUCT] — [BRIEF DESCRIPTION].", // Add more variations... ]; For New Connections (Connection Requests) Open the "Generate Message for New Connection" node and update the same sections with your product/service details. Tips for good messages: Keep under 300 characters for connection requests Personalize with their name (already included) Mention something specific about why you're reaching out Include a clear but soft call-to-action Have 3-5 variations to avoid repetitive messaging Step 4: Adjust the Schedule Open the Weekly Schedule Trigger node Adjust based on your profile traffic: High traffic: Daily Medium traffic: Every 3 days Low traffic: Weekly (default) Step 5: Test the Workflow Click Test Workflow on the Schedule Trigger or add a Manual Trigger Verify: Profile visitors are fetched correctly Deduplication works (no existing contacts get messaged) Connection degree routing works properly Messages are personalized with visitor names Google Sheets logs entries correctly Customization Time Range for Visitors Edit the JSON body in the Fetch Profile Visitors node: {"timeRange":"past_7_days","start":0,"fetchAll":true} Options: past_7_days - Last week's visitors (default) past_30_days - Last month's visitors past_90_days - Last quarter's visitors Message Personalization Both Code nodes support multiple message variations. The workflow randomly selects one for each visitor, making your outreach feel more natural. To add more variations: Open the relevant Code node Add new message strings to the messages array Use placeholders like [YOUR PRODUCT] and replace with your actual content Wait Time Between Messages The Wait Between Messages node adds delays between outreach. Adjust the duration to: Increase if you want more conservative pacing Decrease if you have premium LinkedIn and higher limits Recommended: 1-5 minutes between messages Add More Tracking Fields To track additional data in Google Sheets: Add columns to your sheet (e.g., Message Sent, Connection Degree, Date) Update the Google Sheets nodes to map these new fields Pull data from the workflow context using expressions Filter by Company or Title Want to only message visitors from specific companies or with certain titles? Add an IF node after Skip if Already Contacted Add conditions based on visitor data fields Route non-matching visitors directly to the Wait node Use Cases Sales Prospecting**: Automatically reach out to decision-makers who are researching you before a sales cycle Recruiting**: Engage passive candidates who are checking out your profile after seeing job posts Founder Networking**: Connect with investors, partners, and potential hires who show interest Consulting/Freelance**: Convert profile visitors into discovery calls by reaching out while you're top of mind Personal Branding**: Build your network by engaging everyone who takes time to view your profile Troubleshooting Common Issues & Solutions Issue: No visitors returned from API Solution**: Ensure your LinkedIn account is connected in ConnectSafely.ai dashboard. Also verify you've had recent profile views (check LinkedIn's native viewer count). Issue: Duplicate messages being sent Solution**: Verify the Google Sheets lookup is working correctly. Check that the Linkedin URL column matches exactly what the API returns. Make sure all three Google Sheets nodes point to the same sheet. Issue: Messages not sending Solution**: Check your ConnectSafely.ai API key is valid. Verify the HTTP Request nodes have the Bearer Auth credential attached. Check the API response for error messages. Issue: Wrong message type sent (DM vs Connection Request) Solution: The routing is based on connectionDegree field. Verify this field is being returned correctly from the API. Check the **Check if 1st Degree Connection node conditions. Issue: Profile ID extraction failing Solution: The **Extract Profile ID from URL Code node parses the LinkedIn URL. Check that visitors have valid navigationUrl values. Issue: Google Sheets not updating Solution**: Verify your Google Sheets credential has write access. Check that the sheet ID is correct and the sheet name matches. Issue: Rate limit errors Solution: Increase the wait time in the **Wait Between Messages node. Consider reducing the frequency of the schedule trigger. Rate Limiting Best Practices LinkedIn monitors automated activity. To stay safe: Start slow**: Begin with 10-15 messages per day Gradually increase**: Add 5 more per week up to 50/day max Use random delays**: The workflow includes built-in waits Pause if warned**: If LinkedIn shows any warnings, stop for 24-48 hours Keep messages personal**: Avoid spammy, salesy language Don't run 24/7**: Schedule during business hours Costs & Considerations | Service | Cost | |---------|------| | ConnectSafely.ai | Free trial available, then subscription | | Google Sheets | Free | | n8n | Free (self-hosted) or cloud pricing | No per-message costs - ConnectSafely.ai subscription includes API access for messaging. Documentation & Resources Official Documentation ConnectSafely.ai Docs**: https://connectsafely.ai/docs ConnectSafely.ai API Reference**: Available in dashboard Google Sheets API**: https://developers.google.com/sheets Support Channels Email Support**: support@connectsafely.ai Documentation**: https://connectsafely.ai/docs Custom Workflows**: Contact us for custom automation Connect With Us Stay updated with the latest automation tips and LinkedIn strategies: 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 Oneclick AI Squad
This n8n workflow automates task creation and scheduled reminders for users via a Telegram bot, ensuring timely notifications across multiple channels like email and Slack. It streamlines task management by validating inputs, storing tasks securely, and delivering reminders while updating statuses for seamless follow-up. Key Features Enables users to create tasks directly in chat via webhook integration. Triggers periodic checks for due tasks and processes them individually for accurate reminders. Routes reminders to preferred channels (Telegram, email, or Slack) based on user settings. Validates inputs, handles errors gracefully, and logs task data for persistence and auditing. Workflow Process The Webhook Entry Point node receives task creation requests from users via chat (e.g., Telegram bot), including details like user ID, task description, and channel preferences. The Input Validation node checks for required fields (e.g., user ID, task description); if validation fails, it routes to the Error Response node. The Save to Database node stores validated task data securely in a database (e.g., PostgreSQL, MongoDB, or MySQL) for persistence. The Success Response node (part of Response Handlers) returns a confirmation message to the user in JSON format. The Schedule Trigger node runs every 3 minutes to check for pending reminders (with a 5-minute buffer for every hour to avoid duplicates). The Fetch Due Tasks node queries the database for tasks due within the check window (e.g., reminders set for within 3 minutes). The Tasks Check node verifies if fetched tasks exist and are eligible for processing. The Split Items node processes each due task individually to handle them in parallel without conflicts. The Channel Router node directs reminders to the appropriate channel based on task settings (e.g., email, Slack, or Telegram). The Email Sender node sends HTML-formatted reminder emails with task details and setup instructions. The Slack Sender node delivers Slack messages using webhooks, including task formatting and user mentions. The Telegram Sender node sends Telegram messages via bot API, including task ID, bot setup, and conversation starters. The Update Task Status node marks the task as reminded in the database (e.g., updating status to "sent" with timestamp). The Workflow Complete! node finalizes the process, logging completion and preparing for the next cycle. Setup Instructions Import the workflow into n8n and configure the Webhook Entry Point with your Telegram bot's webhook URL and authentication. Set up database credentials in the Save to Database and Fetch Due Tasks nodes (e.g., connect to PostgreSQL or MongoDB). Configure channel-specific credentials: Telegram bot token for Telegram Sender, email SMTP for Email Sender, and Slack webhook for Slack Sender. Adjust the Schedule Trigger interval (e.g., every 3 minutes) and add any custom due-time logic in Fetch Due Tasks. Test the workflow by sending a sample task creation request via the webhook and simulating due tasks to verify reminders and status updates. Monitor executions in n8n dashboard and tweak validation rules or response formats as needed for your use case. Prerequisites Telegram bot setup with webhook integration for task creation and messaging. Database service (e.g., PostgreSQL, MongoDB, or MySQL) for task storage and querying. Email service (e.g., SMTP provider) and Slack workspace for multi-channel reminders. n8n instance with webhook and scheduling enabled. Basic API knowledge for bot configuration and channel routing. Modification Options Customize the Input Validation node to add fields like priority levels or recurring task flags. Extend the Channel Router to include additional channels (e.g., Microsoft Teams or SMS via Twilio). Modify the Schedule Trigger to use dynamic intervals based on task urgency or user preferences. Enhance the Update Task Status node to trigger follow-up actions, like archiving completed tasks. Adjust the Telegram Sender node for richer interactions, such as inline keyboards for task rescheduling. Explore More AI Workflows: Get in touch with us for custom n8n automation!
by ConnectSafely
Extract LinkedIn Group Members to Google Sheets - Premium & Verified Only using ConnectSafely.AI API Who's it for This workflow is built for sales professionals, community managers, recruiters, and growth marketers who want to extract high-quality leads from LinkedIn groups without the manual grind. Perfect for anyone who needs to identify decision-makers, founders, and serious professionals within large LinkedIn communities. If you're running targeted outreach campaigns, building prospect lists, researching competitor communities, or looking to connect with verified industry leaders, this automation filters the noise and delivers only Premium and Verified members straight to your spreadsheet. How it works The workflow automates LinkedIn group member extraction by combining pagination handling with intelligent filtering through ConnectSafely.ai's API. The process flow: Initializes pagination variables with your target group ID Fetches group members in batches of 50 via ConnectSafely.ai API Filters each batch for Premium OR Verified members only Extracts profile data (name, headline, follower count, profile URL, etc.) Checks if more pages exist and loops back automatically Once complete, splits all members into individual items Appends or updates records in Google Sheets (deduplicates by Profile ID) The pagination loop handles groups of any size - whether 500 or 50,000 members. Setup steps Step 1: Prepare Your Google Sheet Structure your Google Sheet with the following columns: | Column Name | Description | Required | |------------|-------------|----------| | Profile ID | Unique LinkedIn profile identifier | Yes | | First Name | Member's first name | Yes | | Last Name | Member's last name | Yes | | Full Name | Combined first and last name | Yes | | Headline | Professional headline/tagline | Yes | | Public Identifier | LinkedIn username | Yes | | Profile URL | Direct link to LinkedIn profile | Yes | | Follower Count | Number of followers | Yes | | Is Premium | Premium subscription status | Yes | | Is Verified | Verification badge status | Yes | | Relationship Status | Connection degree (1st, 2nd, 3rd) | Yes | Pro Tip: The workflow uses "Append or Update" operation with Profile ID as the matching column, so running it multiple times won't create duplicates. Step 2: Configure ConnectSafely.ai API Credentials Obtain API Key Log into ConnectSafely.ai Dashboard Navigate to Settings → API Keys Generate a new API key Add Bearer Auth Credential in n8n Go to Credentials in n8n Click Add Credential → Header Auth or Bearer Auth Paste your ConnectSafely.ai API key Save the credential This credential is used by the "Fetch Group Members" HTTP Request node. Step 3: Configure Google Sheets Integration 3.1 Connect Google Sheets Account Go to Credentials → Add Credential → Google Sheets OAuth2 Follow the OAuth flow to connect your Google account Grant access to Google Sheets 3.2 Configure "Append to Google Sheets" Node Open the Append to Google Sheets node Select your Google Sheets credential Enter your Document ID (from the sheet URL) Select the Sheet Name Configure column mapping to match the extracted fields Set Matching Column to Profile ID for deduplication Step 4: Set Your Target LinkedIn Group Open the Initialize Pagination node Locate the groupId variable in the code Replace "9357376" with your target group ID Finding Your Group ID: Go to your LinkedIn group Look at the URL: linkedin.com/groups/XXXXXXX/ The numbers are your group ID // Change this value to your target group groupId: "9357376", // Replace with your group ID Step 5: Test the Workflow Click the Start Workflow manual trigger node Click Test Workflow Verify: API returns member data correctly Filtering captures only Premium/Verified members Pagination loops for additional pages (if applicable) Google Sheets populates with extracted data Customization Filter Criteria Edit the filter logic in the Process & Filter Members node to adjust: Premium Only**: Remove the isVerified checks to capture only Premium subscribers Verified Only**: Remove the isPremium checks to capture only Verified profiles All Members**: Remove the filter entirely to extract everyone (modify the return statement) Minimum Followers**: Add a follower count threshold for influencer targeting // Example: Filter for Premium members with 1000+ followers const filteredMembers = members.filter(member => { const isPremium = member.isPremium === true; const hasMinFollowers = member.followerCount >= 1000; return isPremium && hasMinFollowers; }); Batch Size Default**: 50 members per API request Adjust**: Modify the count value in Initialize Pagination node Note**: 50 is the maximum allowed by the API Additional Fields The API returns more fields than extracted by default. Edit the Process & Filter Members node to include: creator - Whether they're a LinkedIn creator badges - Full list of profile badges fetchedAt - Timestamp of extraction Use Cases Sales Prospecting**: Build targeted prospect lists from industry-specific groups with verified decision-makers Competitor Research**: Analyze who's active in competitor communities and their professional backgrounds Influencer Identification**: Find Premium creators and verified professionals for partnership opportunities Recruiting**: Source passive candidates who are active in professional development groups Event Marketing**: Identify engaged professionals in niche communities for webinar and conference promotion Content Strategy**: Research headlines and titles to understand what resonates in your industry Troubleshooting Common Issues & Solutions Issue: Empty results returned Solution**: Verify you're a member of the target group; API can only access groups you've joined Issue: "401 Unauthorized" errors Solution**: Check that your ConnectSafely.ai API key is valid and the Bearer Auth credential is properly configured Issue: Pagination loop seems infinite Solution**: This is expected behavior until hasMore returns false; large groups may take several minutes to fully process Issue: Duplicate entries in Google Sheets Solution**: Ensure the "Append or Update" operation is selected with Profile ID as the matching column Issue: Missing data in certain columns Solution**: Not all profiles have complete data; the workflow handles null values gracefully Issue: Google Sheets not updating Solution**: Verify OAuth credentials are valid and the sheet/document IDs are correctly configured Documentation & Resources Official Documentation ConnectSafely.ai Docs**: https://connectsafely.ai/docs API Reference**: Available in ConnectSafely.ai dashboard n8n Google Sheets Node**: https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/ Support Channels Email Support**: support@connectsafely.ai Documentation**: https://connectsafely.ai/docs Custom Workflows**: Contact us for custom automation 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