Telegram to LinkedIn, approve posts then publish
Last-minute LinkedIn writing is a quiet productivity killer. You either ship something rushed, or you skip posting, then spend the week “meaning to get back to it.”
Marketing managers feel it when content calendars slip. A founder feels it when visibility drops. And consultants trying to stay top-of-mind get hit hardest. This Telegram LinkedIn automation creates drafts for you, sends them for approval, then publishes at a smart time so you stay consistent without losing control.
You’ll learn what the workflow does, what you need to run it, and how the approval-and-publish loop works end-to-end.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Telegram to LinkedIn, approve posts then publish
flowchart LR
subgraph sg0["Scheduled Run Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Run Trigger", pos: "b", h: 48 }
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Execution Start", pos: "b", h: 48 }
n2["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Compute Run Day"]
n3@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Validate Run Day", pos: "b", h: 48 }
n4@{ icon: "mdi:swap-vertical", form: "rounded", label: "Draft Prompt Set", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Select Random Prompt"]
n6@{ icon: "mdi:robot", form: "rounded", label: "Generate AI Draft", pos: "b", h: 48 }
n7["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Pick Posting Time"]
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Send Draft for Approval"]
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Approval Gate", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Delay Until Scheduled", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/linkedin.svg' width='40' height='40' /></div><br/>Publish LinkedIn Post"]
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/telegram.svg' width='40' height='40' /></div><br/>Notify Post Live"]
n2 --> n3
n4 --> n5
n3 --> n4
n7 --> n8
n11 --> n12
n5 --> n6
n6 --> n7
n0 --> n2
n9 --> n10
n10 --> n11
n8 --> n9
n1 --> n2
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0,n1 trigger
class n6 ai
class n3,n9 decision
class n2,n5,n7 code
classDef customIcon fill:none,stroke:none
class n2,n5,n7,n8,n11,n12 customIcon
Why This Matters: LinkedIn Consistency Without Daily Writing
LinkedIn rewards consistency, but consistency is hard when every post starts from a blank page. You open a doc, stare at it, and suddenly it’s 30 minutes later and you’ve written two sentences you don’t even like. Then the day gets busy. You tell yourself you’ll post tomorrow, and “tomorrow” turns into next week. Even when you do write, you still have to decide when to publish, copy it into LinkedIn, and hope you didn’t leave in a weird formatting glitch or unfinished thought.
It adds up fast. Here’s where it breaks down in real life.
- Writing one decent post can easily take about 45 minutes when you include topic choice, drafting, and edits.
- Posts get skipped because you don’t trust an auto-publisher without a final human check.
- When you do publish, timing becomes guesswork, so you end up posting whenever you remember.
- Repetitive prompts create repetitive posts, which is how your content starts sounding like everyone else.
What You’ll Build: Draft, Approve in Telegram, Then Publish on LinkedIn
This workflow turns LinkedIn posting into a simple approval routine. It starts on a schedule (or manually) and checks what day it is, so you can automatically avoid posting Friday through Sunday if that fits your strategy. Next, it pulls from a set of pre-written prompts you keep inside the workflow, then randomly selects one so the content doesn’t feel copy-pasted. That prompt goes to OpenAI, which generates a clean LinkedIn draft. The draft gets delivered to you in Telegram for review, where you approve or reject it. If you approve, the workflow picks a randomized posting time, waits until that slot, publishes to your LinkedIn account, and then messages you again to confirm the post is live.
The flow is simple: schedule triggers creation, OpenAI drafts the post, Telegram acts as your control panel, and LinkedIn is the final destination. You stay in charge, but you’re no longer doing the busywork every day.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you post 4 times per week. Manually, if each post takes about 45 minutes to draft, polish, and publish, that’s roughly 3 hours a week just to keep the habit alive. With this workflow, you’ll spend a couple minutes approving each Telegram message, so maybe 10 minutes total, while the automation handles drafting, timing, and publishing. That’s close to 3 hours back in a normal week, and your posting stays steady.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram for approval messages and notifications.
- LinkedIn to publish posts to your profile or page.
- OpenAI API key (get it from the OpenAI Platform API keys page).
Skill level: Beginner. You will connect accounts, paste an API key, and edit a few prompts.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
A scheduled (or manual) run kicks things off. The workflow can run from a Schedule Trigger, or you can fire it manually when you want a fresh draft on demand.
It checks the day and decides if it should post. A small logic step figures out the day of the week, then an “allowed?” check can skip Friday through Sunday so you don’t accidentally publish on days you’ve chosen to avoid.
Prompts are prepared, then one gets picked at random. You keep a set of prompt templates inside the workflow, and a random selection step rotates them. This is a big deal for consistency because it helps your AI drafts feel less like they came from the same mold.
OpenAI generates a draft, then Telegram asks you to approve it. You’ll receive the proposed LinkedIn post in Telegram, where you can approve or reject. If you approve, the workflow chooses a posting time, waits until then, publishes via the LinkedIn integration, and finally pings you that it went live.
You can easily modify the prompt set to match your niche, or change the “no posting” days based on your audience. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the schedule trigger
Set up the automated schedule and manual start options that kick off the workflow.
- Add and configure Scheduled Run Trigger with a cron rule.
- Set the Expression to
0 8 * * 1-4to run at 08:00 UTC Monday–Thursday. - Add Manual Execution Start to enable on-demand testing and manual runs.
- Connect both Scheduled Run Trigger and Manual Execution Start to Compute Run Day.
Tip: Keep Manual Execution Start connected during setup so you can run tests without waiting for the schedule.
Step 2: Configure day validation and prompt selection
Use a date check to skip unwanted days and select a randomized prompt for the AI draft.
- In Compute Run Day, keep the JavaScript as provided to calculate
skipTodaybased on Central Time. - In Validate Run Day, set the Boolean condition to
={{$json["skipToday"]}}with operator True. - Connect the false output of Validate Run Day to Draft Prompt Set so posting continues only when allowed.
- In Draft Prompt Set, confirm all prompt fields (prompt1–prompt6) are present and match your desired content themes.
- In Select Random Prompt, keep the code that selects a random prompt from the six options.
⚠️ Common Pitfall: If Validate Run Day is wired from the true output by mistake, the workflow will only run on days you intended to skip.
Step 3: Set up AI draft generation
Generate the LinkedIn post text using OpenAI with the selected prompt.
- Open Generate AI Draft and select the model
chatgpt-4o-latest. - Set the message content to
={{ $('Select Random Prompt').item.json.selectedPrompt }}. - Credential Required: Connect your openAiApi credentials.
- Connect Select Random Prompt → Generate AI Draft.
Step 4: Configure scheduling and approval workflow
Pick a randomized posting time, send the draft for Telegram approval, and pause until the scheduled time.
- In Pick Posting Time, keep the JavaScript that selects from
['09:00', '11:00', '15:00']and outputspostTimeUTC_ISO. - Connect Generate AI Draft → Pick Posting Time → Send Draft for Approval.
- In Send Draft for Approval, set Operation to
sendAndWaitand keep the message template with{{ $('Generate AI Draft').item.json.message.content }}and{{ $json.postTimeCentral }}. - Credential Required: Connect your telegramApi credentials.
- In Approval Gate, set the boolean condition to
={{ $json.data.approved }}with operator True. - In Delay Until Scheduled, set Resume to
specificTimeand Date & Time to={{ $('Pick Posting Time').item.json.postTimeUTC_ISO }}.
Tip: Ensure the Telegram approval prompt is sent to a valid chatId so the approval flow can continue.
Step 5: Configure LinkedIn publishing and notifications
Post the approved draft to LinkedIn and notify the team when it goes live.
- In Publish LinkedIn Post, set Text to
={{ $('Generate AI Draft').item.json.message.content }}. - Set Person to your LinkedIn profile ID (replace
[YOUR_ID]). - Credential Required: Connect your linkedInOAuth2Api credentials.
- Connect Delay Until Scheduled → Publish LinkedIn Post → Notify Post Live.
- In Notify Post Live, set Text to
Personal LinkedIn Post Activeand chatId to your Telegram ID. - Credential Required: Connect your telegramApi credentials.
Step 6: Test and Activate Your Workflow
Validate end-to-end behavior and enable the scheduled automation.
- Click Execute Workflow on Manual Execution Start to run a test without waiting for the schedule.
- Confirm that Send Draft for Approval delivers a Telegram message containing the draft and scheduled time.
- Approve the draft to ensure Approval Gate passes and Delay Until Scheduled holds until the computed time.
- Verify that Publish LinkedIn Post posts successfully and Notify Post Live sends the confirmation message.
- Toggle the workflow to Active so Scheduled Run Trigger runs on the cron schedule.
Troubleshooting Tips
- LinkedIn credentials can expire or require the right permissions. If publishing fails, check the LinkedIn credential in n8n first, then confirm the connected account still has posting access.
- If you’re using Wait nodes or external timing logic, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About 30 minutes if your accounts are ready.
No. You’ll mostly connect accounts and edit prompts, and the included logic already handles day checks and timing.
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 OpenAI API costs (often a few cents per draft, depending on model and length).
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.
Yes, and you should. The quickest win is editing the prompts in the “Draft Prompt Set” step and keeping 10–20 variations so the “Select Random Prompt” step has real variety. You can also change the day filter in the “Validate Run Day” check to match your posting rules, then adjust the “Pick Posting Time” logic if you want a fixed time instead of a random slot. If you’d rather approve in Slack, swap the Telegram approval message for a Slack approval flow and keep the rest.
Usually it’s the bot setup, not n8n. Confirm your Telegram bot token is correct, the bot has been started (you sent it a message), and you’re using the right chat ID or user ID in the Telegram node. If it worked once and stopped, rotate the token in BotFather and update the credential in n8n. Rarely, it’s simply that the workflow is sending to a different chat than the one you’re watching.
Plenty for typical LinkedIn cadence.
Often, yes, because approvals plus timing logic get clunky fast in simpler tools. n8n is better when you want branching (approve vs. reject), day-based rules (skip weekends), and custom logic for picking prompts or post times without paying extra for every “path.” It also gives you the option to self-host, which matters if you want lots of runs without worrying about task limits. Zapier or Make can still be fine if you only want a basic “generate draft → send to me” setup. Talk to an automation expert if you’re not sure which fits.
Once this is running, LinkedIn stops being a daily scramble and becomes a quick approval habit. Set it up once, then get back to work that actually moves the needle.
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.