WordPress + Telegram: publish posts with less busywork
Drafts pile up, approvals get lost in email threads, and the “final” version somehow isn’t the one that gets published. Then you’re copying excerpts, hunting for categories, uploading a featured image, and trying to remember where you logged it. Again.
This WordPress Telegram automation hits marketing managers first, but agency owners and content leads feel it too. You get a simple approval loop in Telegram, a clean publish to WordPress, and a Google Sheets record you can trust.
Below, you’ll see exactly how the workflow runs, what it automates, and what “publishing without busywork” looks like in real weekly numbers.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: WordPress + Telegram: publish posts with less busywork
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0["<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/wordpress.svg' width='40' height='40' /></div><br/>Create a post"]
n1@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule Trigger", pos: "b", h: 48 }
n2@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "Google Gemini Chat Model1", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n6["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Upload Media to Wordpress"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Existing Categories"]
n8@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If1", pos: "b", h: 48 }
n9["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Category in Wordpress"]
n10["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get Articles on Topics"]
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/code.svg' width='40' height='40' /></div><br/>URLs Extractor"]
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/>Confirm Article to Confirm"]
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Article Not None", pos: "b", h: 48 }
n14@{ icon: "mdi:cog", form: "rounded", label: "Aggregate Categories", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Generate an Image Gemini", pos: "b", h: 48 }
n17["<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/>Final Telegram Message"]
n18["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Change the Author"]
n19["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Add Excerpt on the Post"]
n20["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Add the Featured Media on Post"]
n21["<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/>Get Formatted Date & Time"]
n22@{ icon: "mdi:swap-vertical", form: "rounded", label: "Structure for the Post Content", pos: "b", h: 48 }
n23@{ icon: "mdi:database", form: "rounded", label: "Append Post Data in the Sheet", pos: "b", h: 48 }
n24@{ icon: "mdi:robot", form: "rounded", label: "Generate the Topic using LLM", pos: "b", h: 48 }
n25@{ icon: "mdi:robot", form: "rounded", label: "Write Content for the Post", pos: "b", h: 48 }
n26@{ icon: "mdi:swap-vertical", form: "rounded", label: "Structure Selected Post", pos: "b", h: 48 }
n27@{ icon: "mdi:swap-vertical", form: "rounded", label: "Structure Tavily Results", pos: "b", h: 48 }
n28@{ icon: "mdi:swap-vertical", form: "rounded", label: "Structure Post Content", pos: "b", h: 48 }
n8 --> n15
n8 --> n9
n0 --> n19
n11 --> n12
n1 --> n24
n18 --> n21
n13 --> n7
n13 --> n24
n14 --> n26
n10 --> n27
n28 --> n8
n19 --> n20
n7 --> n14
n26 --> n25
n15 --> n6
n2 -.-> n24
n27 --> n11
n3 -.-> n24
n21 --> n22
n4 -.-> n25
n5 -.-> n25
n6 --> n0
n12 --> n13
n25 --> n28
n9 --> n15
n24 --> n10
n23 --> n17
n20 --> n18
n22 --> n23
end
subgraph sg1["Generate an Image Op Flow"]
direction LR
n16@{ icon: "mdi:robot", form: "rounded", label: "Generate an Image OpenAI", pos: "b", h: 48 }
end
subgraph sg2["Flow 3"]
direction LR
n29["<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/httprequest.dark.svg' width='40' height='40' /></div><br/>Get All the Users"]
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 n1 trigger
class n3,n5,n15,n24,n25,n16 ai
class n2,n4 aiModel
class n8,n13 decision
class n23 database
class n6,n7,n9,n10,n18,n19,n20,n29 api
class n11,n21 code
classDef customIcon fill:none,stroke:none
class n0,n6,n7,n9,n10,n11,n12,n17,n18,n19,n20,n21,n29 customIcon
The Problem: Publishing blog posts takes too many manual handoffs
Publishing is rarely “just hit publish.” Someone has to pick a topic, find decent sources, shape it into something original, and make sure it matches your voice. Then comes the messy part: approving the right draft, assigning the right category, generating an image, uploading it, setting featured media, adding an excerpt, checking the author, and logging what went live. One missed checkbox and you end up with uncategorized posts, wrong authors, broken images, or content that never gets tracked. It’s not hard work. It’s repetitive work, and it steals time from strategy.
The friction compounds. Here’s where it breaks down in day-to-day operations.
- Approvals happen in five places, so the “go ahead” message gets buried.
- Category management becomes guesswork, especially when new topics show up mid-week.
- Featured images and excerpts are rushed, which makes otherwise good posts look unfinished.
- Tracking is inconsistent, so reporting takes another hour at the end of the month.
The Solution: Telegram approvals that publish to WordPress and log to Sheets
This workflow turns your content pipeline into a repeatable system that runs on a schedule. It starts by using Gemini to generate a topic aligned with your services, then pulls fresh source articles via Tavily for quick research. You get a Telegram message to review the options and pick the one you want to move forward with, so a human still controls the direction. After selection, Gemini rewrites the chosen piece into a polished, SEO-friendly WordPress post, including structured content you can publish without heavy editing. Next, the workflow handles categories (it checks what exists, and can create a new category if needed), generates a featured image (Gemini, with an OpenAI fallback), uploads media, publishes to WordPress, and finishes the post setup. Finally, it logs the publish details to Google Sheets and sends a completion notice back to Telegram.
It begins with a scheduled trigger and ends with a published article plus an audit trail. The middle is where the busywork disappears: source selection in Telegram, AI drafting, category handling, image generation, and WordPress finishing touches like excerpt and featured media.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say your team publishes 3 SEO posts per week. Manually, you might spend about 15 minutes picking a topic and sources, about 20 minutes moving content into WordPress, then another 15 minutes on categories, excerpts, and featured image uploads, plus 10 minutes logging it in a sheet. That’s roughly 1 hour per post, so around 3 hours weekly. With this workflow, you approve the source in Telegram in a minute or two, then wait for processing and review the finished draft before it publishes, which is closer to 10 minutes of hands-on time per post.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- WordPress for publishing posts and media.
- Telegram to approve the article choice quickly.
- Google Sheets to keep an audit log of posts.
- Google Gemini API key (get it from Google AI Studio).
- Tavily API key (get it from your Tavily dashboard).
- OpenAI API key (get it from the OpenAI API dashboard, used for image fallback).
Skill level: Intermediate. You’ll connect accounts, paste API keys, and adjust a few prompts and WordPress fields.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A schedule kicks it off. n8n runs on the timing you choose, so you can publish daily, a few times a week, or on your editorial cadence.
AI proposes a topic and gathers sources. Gemini generates a topic aligned to your services, then Tavily fetches recent articles. n8n formats those results into something a human can actually scan quickly.
You approve the direction in Telegram. A Telegram message prompts you to choose which source article to use. If there’s no valid selection, the workflow can loop back and generate a fresh option rather than publishing something questionable.
WordPress gets a complete post, not a half-finished draft. Gemini rewrites the selected source into an SEO-friendly post, the workflow checks categories (and can create one), generates a featured image, uploads media, publishes the post, adds the excerpt, sets featured media, and updates the author.
Tracking happens automatically. The final post details are appended to Google Sheets, and a completion notice is sent to Telegram so you have a clean “done” signal.
You can easily modify the posting schedule to match your content calendar based on your needs. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Schedule Trigger
Set the workflow cadence so content creation starts automatically.
- Add and open Scheduled Automation Trigger.
- Define the schedule you want this pipeline to run on (e.g., daily or weekly) in the node’s scheduling options.
- Confirm the trigger connects to Generate Topic with LLM as the next step.
Step 2: Connect Article Discovery and Review
Generate a topic, fetch relevant articles, and send a review to Telegram for approval.
- Open Generate Topic with LLM and confirm it is connected to Gemini Chat Model A and Structured Output Parser A.
- Credential Required: Connect your Google Gemini credentials on Gemini Chat Model A (credentials are added to the model, not the parser).
- Open Fetch Topic Articles and configure your HTTP request to the article source API or search endpoint.
- Open Map Search Results and map the fields you need for later selection (title, URL, summary).
- Open Extract Source URLs and confirm the code outputs a list of URLs for Telegram review.
- Open Telegram Article Review and connect it to your Telegram bot.
- Credential Required: Connect your Telegram credentials.
- Ensure Telegram Article Review flows into Validate Article Present.
Step 3: Build the Content Drafting Pipeline
Transform the approved article into a draft post using the LLM and structured parsing.
- Confirm Validate Article Present routes approved items into Retrieve Existing Categories (this is the primary path) and can loop back to Generate Topic with LLM on rejection.
- Open Retrieve Existing Categories and configure the HTTP request to your WordPress categories endpoint.
- Open Combine Category List and aggregate the categories into a usable list for selection.
- Open Map Selected Article and map the approved article fields for drafting.
- Open Draft Post Content and confirm it is connected to Gemini Chat Model B and Structured Output Parser B.
- Credential Required: Connect your Google Gemini credentials on Gemini Chat Model B (credentials are added to the model, not the parser).
- Open Map Post Content and map the LLM output into the fields needed for publishing (title, content, excerpt, tags).
Step 4: Handle Categories and Image Generation
Ensure the post category exists, create it if needed, and generate a featured image.
- Open Category Exists Check and configure the condition to determine if the category from Map Post Content already exists.
- If the category does not exist, verify the false path goes to Create WP Category, which then returns to Generate Image via Gemini.
- Open Create WP Category and configure the HTTP request to create a WordPress category.
- Open Generate Image via Gemini and set up the prompt for generating a featured image based on the draft content.
- Credential Required: Connect your Google Gemini credentials in Generate Image via Gemini.
- Open Upload Media to WP and configure it to upload the image to WordPress media.
Step 5: Publish the WordPress Post
Create the WordPress post and then update it with excerpt, featured media, and author metadata.
- Open Publish WordPress Article and configure it to create the post using the payload from Upload Media to WP.
- Credential Required: Connect your WordPress credentials in Publish WordPress Article.
- Open Add Post Excerpt and confirm it updates the post excerpt using the drafted summary.
- Open Set Featured Media and set the featured image ID from the upload response.
- Open Modify Post Author and configure it to update the author field as needed.
- Open Format Date Time to format the publishing date before it reaches Assemble Post Payload.
Step 6: Log Output and Send Notifications
Store post metadata in Google Sheets and notify completion in Telegram.
- Open Assemble Post Payload and verify the final structured data before logging.
- Open Append Data to Sheet and configure the target spreadsheet, sheet tab, and columns.
- Credential Required: Connect your Google Sheets credentials in Append Data to Sheet.
- Open Telegram Completion Notice and set the completion message format.
- Credential Required: Connect your Telegram credentials in Telegram Completion Notice.
Step 7: Review Utility Nodes and Optional Tools
Optional utility nodes exist for future expansion or alternative image generation.
- Review Utility: OpenAI Image Gen if you want an alternative to Gemini image generation.
- Credential Required: Connect your OpenAI credentials in Utility: OpenAI Image Gen if you plan to use it.
- Review Utility: Retrieve All Users if you plan to dynamically assign authors.
Step 8: Test and Activate Your Workflow
Run a full test to validate the end-to-end pipeline before turning it on.
- Click Execute Workflow to run a manual test from Scheduled Automation Trigger.
- Verify a topic is generated, articles are fetched, and the Telegram review step is reached.
- Approve an article and confirm that a draft is created, categories are checked/created, and an image is generated and uploaded.
- Confirm the WordPress post is published, featured media and excerpt are set, and the author is updated.
- Check that Append Data to Sheet logs the post and Telegram Completion Notice sends the success message.
- Once verified, toggle the workflow Active to enable scheduled publishing.
Common Gotchas
- WordPress credentials can expire or need specific permissions. If things break, check your WordPress user role and application password access first.
- If you’re using Wait nodes or external rendering, 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.
Frequently Asked Questions
About 30 minutes if your accounts and API keys are ready.
No. You’ll mainly connect accounts and edit a couple of prompts and WordPress fields.
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 Gemini, Tavily, and (optionally) OpenAI API usage costs.
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, but you’ll want to change where the WordPress publish happens. A common tweak is to keep the Telegram approval, then modify the “Publish WordPress Article” step to create a draft instead, and only publish after a second Telegram confirmation. You can also swap the image step to always use OpenAI by adjusting the “Generate Image via Gemini” and “Utility: OpenAI Image Gen” logic.
Usually it’s permissions or an expired application password. Regenerate your WordPress application password, update it in n8n, and confirm the user can upload media and publish posts. If the post publishes but media upload fails, check that your site blocks XML-RPC style access or has security rules limiting REST uploads. Also watch rate limits if you run the workflow too frequently.
On self-hosted n8n, it’s mainly limited by your server and API rate limits. On n8n Cloud, it depends on your monthly execution quota, but most small teams can run this several times per day without hitting limits.
Often, yes, because this flow isn’t a simple “A to B” zap. You have branching logic (article validation, category exists checks, fallbacks), multiple HTTP steps to finish a WordPress post properly, and structured AI output parsing, which means fewer weird formatting surprises. n8n also lets you self-host for unlimited executions, which matters when you scale publishing or start running multiple sites. Zapier and Make can still work if you keep the workflow tiny, but costs usually climb once you add multi-step logic and AI calls. If you want a second opinion, Talk to an automation expert.
Once this is running, publishing stops being a mini-project. The workflow handles the repeatable parts so your team can focus on the calls that actually need judgment.
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.