🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Telegram to LinkedIn, approved posts without the grind

Lisa Granqvist Partner Workflow Automation Expert

You know the feeling: you have a solid idea for LinkedIn, maybe a link to a great article, but it dies in your notes app because turning it into a publish-ready post takes too long.

Marketing managers get stuck chasing approvals. Founders end up posting in bursts, then going quiet for weeks. And consultants trying to look consistent? Same mess. This Telegram LinkedIn automation gives you drafts, approvals, and publishing without bouncing between five tabs.

Below, you’ll see how the workflow turns a Telegram message into an AI-drafted LinkedIn post, routes it through a simple approve/edit/reject loop, and logs everything in Google Sheets so nothing disappears.

How This Automation Works

See how this solves the problem:

n8n Workflow Template: Telegram to LinkedIn, approved posts without the grind

The Challenge: LinkedIn posting gets stuck in “draft limbo”

LinkedIn content isn’t hard because you can’t write. It’s hard because the work is scattered. Ideas show up in Telegram, Slack, voice notes, browser tabs, and half-finished Google Docs. Then comes the annoying part: pulling context from a URL, turning it into a clean point of view, checking it doesn’t sound like a robot, and getting someone to say “yes, ship it.” Do that a few times a week and you’re burning hours on process instead of actual thinking.

It adds up fast. Here’s where it breaks down in real life.

  • Approvals happen in random places, so posts get rewritten three times and still don’t get published.
  • Turning a link into a post means copy-pasting, summarizing, then reformatting for mobile-friendly LinkedIn paragraphs.
  • When you’re busy, you lose track of what’s in progress, what was rejected, and what already went live.
  • Manual posting invites avoidable mistakes like broken links, missing hashtags, or publishing the wrong draft.

The Fix: Telegram in, approved LinkedIn post out

This workflow turns Telegram into your “content command center.” You send a message to your bot with a topic, a URL, or a mix of both. The workflow checks that you’re an authorized user, creates a unique post ID, and logs the request to Google Sheets right away (so even half-finished ideas are tracked). Then it classifies what you sent. If there’s a link, it scrapes the page content. If there’s a topic, it pulls fresh context from the web. If it’s direct text, it uses your message as the core input. Finally, Google Gemini generates a LinkedIn-ready draft and sends a clean preview back to Telegram where you can approve, request edits, or reject.

The workflow starts with a Telegram message and a quick authorization check. Then it gathers context (scraping URLs with Firecrawl and searching topics with Brave Search), merges everything into one prompt, and drafts the post with Gemini. Approval happens inside Telegram, and approved posts publish to LinkedIn while the sheet updates automatically.

What Changes: Before vs. After

Real-World Impact

Say you publish 4 LinkedIn posts a week. Manually, a “URL to post” usually looks like 10 minutes to read, 20 minutes to draft, 10 minutes to format, and another 10 minutes to chase approval, so about 50 minutes per post. That’s roughly 3 hours a week. With this workflow, you spend maybe 5 minutes sending a link plus a quick angle in Telegram, then 2 minutes approving or requesting a rewrite. You still control the final output, but you’re not doing the repetitive parts.

Requirements

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Telegram Bot for submitting and approving posts.
  • LinkedIn API app to publish posts to your account/page.
  • Google Sheets to log requests, drafts, and statuses.
  • Google Gemini API key (get it from Google AI Studio).
  • Firecrawl API key (get it from your Firecrawl dashboard).
  • Brave Search API key (get it from Brave Search API portal).

Skill level: Intermediate. You’ll connect APIs, add credentials, and install community nodes if you self-host.

Need help implementing this? Talk to an automation expert (free 15-minute consultation).

The Workflow Flow

A Telegram message triggers everything. You send a topic, a URL, or raw notes to your Telegram bot. The workflow validates your user ID so random people can’t publish to your LinkedIn.

Context gets gathered and cleaned. If a URL is present, the workflow scrapes the page content using Firecrawl. If a topic is present, it uses Brave Search to pull recent results, then merges everything into one usable “source pack.”

Gemini generates a LinkedIn-ready draft. The workflow drafts a post with a strong hook, short paragraphs that read well on mobile, and sensible hashtags while staying under LinkedIn’s character limit.

Approval happens in chat, then it publishes. Telegram sends you a preview with action buttons to approve, edit, or reject. Approved drafts publish via the LinkedIn integration, and Google Sheets updates with the final status and details.

You can easily modify the draft format to match your voice (for example, more “story” and fewer bullets) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Telegram Trigger

Set up the inbound Telegram trigger that starts the workflow for both messages and callback actions.

  1. Add and open Telegram Event Trigger.
  2. Set Updates to include message and callback_query.
  3. Set Additional Fields → Download to true and Image Size to extraLarge.
  4. Credential Required: Connect your telegramApi credentials in Telegram Event Trigger.
  5. Ensure Telegram Event Trigger routes to Route Telegram Input.

If you are testing callbacks, send a post preview first so Telegram provides inline keyboard actions that generate callback_query updates.

Step 2: Connect Google Sheets

Connect all Google Sheets nodes to the same spreadsheet used for request tracking and approvals.

  1. Open Record Initial Request and confirm Operation is appendOrUpdate.
  2. Set Document ID to [YOUR_ID] and Sheet Name to Posts_Master in Record Initial Request.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Record Initial Request.
  4. Repeat the same credential connection for all Google Sheets nodes (6 total) including Update Sheet Record, Fetch Sheet Record, Update Sheet After Rewrite, Mark Sheet as Rejected, and Mark Sheet as Approved.
  5. In Update Sheet Record, confirm expressions such as post_id{{$('Combine Content Inputs').item.json.post_id}} and final_approved_post{{$('Format Preview Output').item.json.post_content}}.

⚠️ Common Pitfall: The sheet uses post_id as a matching column. If Create Post Identifier is bypassed, updates will fail to match the row.

Step 3: Set Up AI Classification and Generation

Configure the AI chain nodes for message classification, post generation, and rewrites.

  1. Open Classify Message Intent and verify Text is {{$json.original_message}} and Has Output Parser is enabled.
  2. Open Parse Structured Output and keep Auto Fix enabled with the JSON schema example provided.
  3. Credential Required: Connect your googlePalmApi credentials in Gemini Model with Parser (the language model for Classify Message Intent and Parse Structured Output).
  4. Open Draft LinkedIn Post and confirm it references Gemini Post Generator as the language model.
  5. Credential Required: Connect your googlePalmApi credentials in Gemini Post Generator.
  6. Open Rewrite Generation Chain and confirm Text is Instructions: {{ $json.data.text }}.
  7. Credential Required: Connect your googlePalmApi credentials in Gemini Rewrite Generator.

AI sub-nodes like Parse Structured Output do not take credentials directly—add them to the parent model node (Gemini Model with Parser).

Step 4: Configure Content Routing and Enrichment

Set up the conditional routing that scrapes URLs and searches topics before merging all content.

  1. In Allowed Telegram Users, set JSON Output to include your Telegram IDs and usernames: {"telegram_ids":["[YOUR_ID]","[YOUR_ID]","[YOUR_ID]"],"usernames":["user_alpha","user_beta","user_gamma"]}.
  2. Ensure Route Content Flow sends to Topic Presence Check and URL Presence Check in parallel.
  3. Topic Presence Check outputs to Search Web for Topics with Query set to {{$json.topics.join(' ')}} latest news 2024.
  4. Credential Required: Connect your braveSearchApi credentials in Search Web for Topics.
  5. URL Presence Check outputs to Collect URLs for Handling, then Iterate URL Batch with Batch Size set to {{$json.total_urls}}.
  6. Scrape URL Content uses URL set to {{$json.current_url}}.
  7. Credential Required: Connect your firecrawlApi credentials in Scrape URL Content.
  8. Confirm Merge Data Streams has Number of Inputs set to 4 and feeds Combine Content Inputs.

⚠️ Common Pitfall: If Route Content Flow bypasses both URL and topic paths, Merge Data Streams still expects inputs. Keep the false route connected to Merge Data Streams as shown.

Step 5: Configure Preview and Approvals in Telegram

Set up preview formatting and approval handling using Telegram messages and callbacks.

  1. Open Format Preview Output to confirm the preview text is generated from the LLM response.
  2. In Dispatch Preview to Telegram, set Text to {{$json.preview_text}} and Chat ID to {{$('Combine Content Inputs').item.json.chat_id}}.
  3. Credential Required: Connect your telegramApi credentials in Dispatch Preview to Telegram.
  4. Ensure the inline keyboard callback data uses approve_{{ $('Combine Content Inputs').item.json.post_id || $json.post_id || 'default' }}, edit_{{ ... }}, and reject_{{ ... }}.
  5. Confirm Handle Callback Data and Route User Actions are connected as in the workflow, then routes to Send Approval Status, Request Edit Instructions, or Send Rejection Notice.
  6. Credential Required: Connect your telegramApi credentials to all Telegram output nodes (8 total), including Send Approval Status, Request Edit Instructions, Send Rejection Notice, Respond to Callback, Send Rewrite for Review, Confirm Publication, and Send Access Denied Notice.

The approval flow relies on the callback data format set in Dispatch Preview to Telegram. Keep the underscore-delimited post ID format used in Handle Callback Data.

Step 6: Configure LinkedIn Publishing and Sheet Updates

Finalize publishing and status updates for approvals, rewrites, and rejections.

  1. In Publish LinkedIn Post, set Text to {{$json.final_approved_post}} and Person to [YOUR_ID].
  2. Credential Required: Connect your linkedInOAuth2Api credentials in Publish LinkedIn Post.
  3. Ensure Publish LinkedIn Post outputs to Confirm Publication, which then updates Mark Sheet as Approved.
  4. Verify Update Sheet After Rewrite updates final_approved_post from {{$json.rewritten_content}}.
  5. Confirm Send Rejection Notice outputs to Mark Sheet as Rejected for status tracking.

⚠️ Common Pitfall: Publish LinkedIn Post requires a valid LinkedIn person URN—replace [YOUR_ID] with your LinkedIn profile ID.

Step 7: Test and Activate Your Workflow

Run a manual test and confirm each stage: classification, enrichment, generation, and approvals.

  1. Click Execute Workflow and send a Telegram message to your bot with either a topic, URL, or text content.
  2. Verify that Record Initial Request creates a row in Posts_Master and that Dispatch Preview to Telegram sends the preview.
  3. Approve, edit, or reject the preview to validate Handle Callback Data and Route User Actions behavior.
  4. Confirm that approved posts trigger Publish LinkedIn Post and that Confirm Publication sends the success notice.
  5. Once verified, toggle the workflow to Active for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Watch Out For

  • LinkedIn API credentials can be picky about permissions. If publishing fails, check your LinkedIn Developer app has the “Share on LinkedIn” product enabled and that your OAuth token is still valid.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Firecrawl and Brave Search both have free tiers, but rate limits are real. If scrapes or searches suddenly return thin data, check usage in their dashboards before assuming the workflow is broken.

Common Questions

How quickly can I implement this Telegram LinkedIn automation automation?

About an hour if your APIs are ready.

Can non-technical teams implement this Telegram LinkedIn automation?

Yes, but you will need someone comfortable with API keys and OAuth once. After setup, daily use is just Telegram messages and approval taps.

Is n8n free to use for this Telegram LinkedIn automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Google Gemini, Firecrawl, and Brave Search API usage (usually a few dollars a month at low volume).

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

How do I adapt this Telegram LinkedIn automation solution to my specific challenges?

You can. Most custom work happens in the Gemini drafting and rewrite prompts, plus the authorization and routing logic that decides “URL vs topic vs direct text.” Common tweaks include changing the post structure (story-first vs bullet-first), adjusting hashtag rules, and adding a second approval round before the “Publish LinkedIn Post” node runs.

Why is my Telegram connection failing in this workflow?

Usually it’s the bot token or privacy settings. Regenerate the token in BotFather if needed, make sure privacy is disabled for the bot, and confirm the workflow’s “Allowed Telegram Users” list includes your user ID. If callbacks (approve/edit/reject) aren’t firing, check the workflow is reachable from Telegram and that your trigger is enabled in n8n.

What’s the capacity of this Telegram LinkedIn automation solution?

On n8n Cloud Starter, you can run thousands of executions per month, which is plenty for most small teams. If you self-host, there’s no platform execution cap; it mostly depends on your server and your API rate limits. Gemini is generous for typical drafting volume, and Brave Search plus Firecrawl are usually the first bottlenecks if you run lots of URL-heavy requests. If you expect dozens of drafts a day, plan on monitoring usage and adding queueing.

Is this Telegram LinkedIn automation automation better than using Zapier or Make?

Often, yes. This workflow relies on branching logic (topic vs URL vs direct), scraping, merging sources, structured parsing, and an approval loop with callbacks, which is where Zapier/Make scenarios can get messy or expensive. n8n also gives you the option to self-host, which matters when you don’t want to pay per task. If you only need “Telegram message → post a static template,” simpler tools can be fine. For anything involving rewrites and approvals, n8n is the more comfortable place to live. Talk to an automation expert if you want a quick recommendation based on your volume.

Once this is running, LinkedIn stops being a weekly scramble. You drop ideas in Telegram, approve when it looks right, and the workflow does the boring parts consistently.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal