WordPress + Telegram, local news posts published for you
Posting local news sounds simple until you’re the one doing it. Find a story, write a summary, make an image, slap on branding, post it to WordPress, then copy it again for Telegram. Miss a step and you’ll notice later, usually when someone asks why the website has it but the channel doesn’t.
This WordPress Telegram automation hits social media managers first, but local publishers and small agency owners feel it too. The outcome is straightforward: fresh local stories become formatted posts with branded images, published on schedule, with confirmations so you know it actually went out.
This workflow runs every few hours, pulls relevant news, generates the copy and image, adds a watermark, publishes to WordPress and pushes the same story to Telegram (plus other channels). You’ll see what it replaces, what you need, and where people usually get stuck.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: WordPress + Telegram, local news posts published for you
flowchart LR
subgraph sg0["Schedule Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Schedule", pos: "b", h: 48 }
n1@{ icon: "mdi:cog", form: "rounded", label: "Wait", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n3@{ icon: "mdi:cog", form: "rounded", label: "Add Watermark", pos: "b", h: 48 }
n4["<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 WordPress Post"]
n5@{ icon: "mdi:cog", form: "rounded", label: "Edit Image", 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 wp"]
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/>upload image to meta data"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>set featured image"]
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/facebook.svg' width='40' height='40' /></div><br/>Facebook Image post"]
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/telegram.svg' width='40' height='40' /></div><br/>Telegram Image post"]
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/>Create profile image 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/linkedin.svg' width='40' height='40' /></div><br/>Create page image post"]
n13["<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/>HTTP Request1"]
n14@{ icon: "mdi:cog", form: "rounded", label: "Do nothing", pos: "b", h: 48 }
n15@{ icon: "mdi:web", form: "rounded", label: "Rapiwa", pos: "b", h: 48 }
n16["<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 a text message"]
n17@{ icon: "mdi:message-outline", form: "rounded", label: "Send a message", pos: "b", h: 48 }
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/discord.svg' width='40' height='40' /></div><br/>Post on Discord Channel"]
n19@{ icon: "mdi:robot", form: "rounded", label: "Specific Content Creation", pos: "b", h: 48 }
n20@{ icon: "mdi:robot", form: "rounded", label: "Generate Prompt", pos: "b", h: 48 }
n21@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n22@{ icon: "mdi:robot", form: "rounded", label: "Generate an image1", pos: "b", h: 48 }
n23@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n24@{ icon: "mdi:wrench", form: "rounded", label: "SerpAPI", pos: "b", h: 48 }
n25@{ icon: "mdi:swap-vertical", form: "rounded", label: "Add tropic", pos: "b", h: 48 }
n2 --> n1
n1 --> n20
n24 -.-> n19
n0 --> n25
n25 --> n19
n14 --> n15
n14 --> n16
n14 --> n17
n5 --> n6
n3 --> n4
n3 --> n9
n3 --> n10
n3 --> n11
n3 --> n12
n3 --> n18
n13 --> n5
n20 --> n22
n21 -.-> n19
n22 --> n3
n23 -.-> n20
n6 --> n7
n4 --> n13
n18 --> n14
n19 --> n2
n7 --> n8
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 trigger
class n19,n20,n22 ai
class n21,n23 aiModel
class n24 ai
class n2 decision
class n6,n7,n8,n9,n13,n15 api
classDef customIcon fill:none,stroke:none
class n4,n6,n7,n8,n9,n10,n11,n12,n13,n16,n18 customIcon
The Challenge: Consistent Local News Publishing Without Busywork
Local news moves fast, and your posting process usually doesn’t. You find a headline, then you rewrite it for your audience, then you scramble for an image that won’t look generic. After that comes the repetitive part: uploading media to WordPress, setting the featured image, formatting the post, then reformatting for Telegram. One small delay turns into “we’ll post it later,” and later becomes never. And honestly, the worst part is the mental load. You’re constantly tracking what got posted where, and you still don’t fully trust it.
It adds up fast. Here’s where it breaks down in real teams.
- You end up rewriting the same story two or three times because WordPress and Telegram need different formatting.
- Featured images get forgotten, or the wrong image gets used, so the website looks inconsistent.
- Branding is uneven because watermarking is done “when there’s time,” which means it’s skipped on busy days.
- You don’t get reliable confirmations, so someone has to double-check every channel anyway.
The Fix: AI-Generated Local Stories Posted to WordPress + Telegram
This n8n workflow turns your local-news posting process into a repeatable publishing loop. It starts on a schedule (every 4 hours), searches for the latest stories on a topic you set (the example is Sirajganj district), and then uses an AI agent to turn those stories into publishable content. If the workflow can’t find anything worth posting, it stops cleanly instead of pushing empty content. When it does find news, it generates an image, applies your watermark branding, uploads the media to WordPress, assigns it as the featured image, and publishes the entry. In parallel, it posts the same story and image to Telegram and other connected channels, then sends delivery confirmations so you’re not guessing.
The workflow kicks off on a timer, builds a topic-aware prompt, and gathers fresh stories via SerpAPI. From there, OpenAI generates both the written post and an image, then the image is watermarked and resized as needed before distribution. Finally, WordPress and Telegram receive the finished content, and you get a confirmation message (Telegram, email, and WhatsApp are supported in this build).
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you publish 3 local stories per day and you post them in two places that actually matter: WordPress and Telegram. Manually, you might spend about 20 minutes per story on writing, formatting, image prep, uploading, and cross-posting, so roughly an hour a day. With this workflow, the “human time” is closer to 5 minutes to review what it generated and make quick edits when needed. The automation does the rest in the background on its 4-hour schedule, and you still get a confirmation message when it completes.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- OpenAI for writing the post and generating images.
- SerpAPI to find the latest relevant news.
- WordPress credentials (create them in your WordPress admin or hosting panel).
Skill level: Intermediate. You’ll be connecting APIs, pasting keys, and testing posts in a safe environment before going live.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A scheduled run starts the whole thing. Every 4 hours, n8n kicks off and appends your topic (the example is a specific district) so the workflow stays focused and doesn’t drift into random headlines.
News is gathered and turned into a publishable draft. SerpAPI searches the web for fresh items, then the LangChain agent and OpenAI convert what it finds into a structured story you can actually post.
Image creation and branding happen automatically. OpenAI generates an image based on the story, then the workflow applies a watermark so every post carries your brand. If no news was found, the workflow branches and stops instead of publishing filler.
Publishing and confirmations come last. WordPress receives the post, the media is uploaded and set as the featured image, and Telegram receives the formatted message with the image. After the social posts are done (Discord and others can be included), the workflow sends confirmation messages via Telegram, email (Gmail), and WhatsApp (Rapiwa).
You can easily modify the topic and the posting destinations 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 to run on a schedule so content is generated automatically.
- Add or open Scheduled Kickoff and configure the schedule you want.
- Connect Scheduled Kickoff to Append Topic to start the content pipeline.
Step 2: Set Up Topic Input and Branching Logic
Define the topic inputs and decision logic that control whether the workflow pauses before generating prompts.
- Open Append Topic and add fields for the topic or seed content you want to use.
- Ensure Append Topic connects to Generate Targeted Content.
- Open Branch Decision and configure the condition that determines whether the workflow should pause.
- Verify Branch Decision connects to Pause Execution.
Step 3: Configure AI Content Generation and Prompting
Set up the AI agents and language models that generate the text content and image prompt.
- Open Generate Targeted Content and connect it to OpenAI Chat Engine as the language model.
- Open Compose Prompt and connect it to OpenAI Prompt Engine as the language model.
- Ensure SerpAPI Search is connected as an AI tool for Generate Targeted Content.
- Credential Required: Connect your OpenAI credentials in OpenAI Chat Engine and OpenAI Prompt Engine.
- Credential Required: Connect your SerpAPI credentials in Generate Targeted Content (the tool SerpAPI Search inherits credentials from its parent node).
Step 4: Generate and Process Images
Create the image, apply branding, and prepare media for WordPress.
- Confirm Pause Execution connects to Compose Prompt, and Compose Prompt connects to Render Image.
- Open Render Image and configure the image generation settings to match your brand.
- Route Render Image into Apply Watermark to add a logo or overlay.
- After posting to WordPress, use Primary API Request → Modify Image → Upload Media to WP → Attach Media Metadata → Assign Featured Image to finalize media assets.
- Credential Required: Add HTTP authentication or WordPress API credentials inside Upload Media to WP, Attach Media Metadata, Assign Featured Image, and Primary API Request if your WordPress site requires it.
Step 5: Configure Publishing to Social Channels (Parallel)
Publish the final image across multiple channels in parallel.
- From Apply Watermark, confirm outputs go to Publish WordPress Entry, Post Facebook Image, Post Telegram Image, LinkedIn Profile Image, LinkedIn Page Image, and Publish Discord Post in parallel.
- Publish WordPress Entry should be configured with your WordPress site and post settings.
- Post Facebook Image, Post Telegram Image, LinkedIn Profile Image, LinkedIn Page Image, and Publish Discord Post should be configured for each platform’s account and channel.
- Credential Required: Connect Facebook Graph API credentials in Post Facebook Image.
- Credential Required: Connect Telegram credentials in Post Telegram Image.
- Credential Required: Connect LinkedIn credentials in LinkedIn Profile Image and LinkedIn Page Image.
- Credential Required: Connect Discord credentials in Publish Discord Post.
- Credential Required: Connect WordPress credentials in Publish WordPress Entry.
Step 6: Configure Follow-Up Notifications (Parallel)
Send text updates and optional follow-up actions after the Discord post completes.
- Verify Publish Discord Post connects to No-Op Step.
- No-Op Step outputs to Rapiwa Action, Send Telegram Text, and Send Email Message in parallel.
- Configure Send Telegram Text with your target chat/channel and message format.
- Configure Send Email Message with recipients, subject, and body.
- Credential Required: Connect Rapiwa credentials in Rapiwa Action if required by your account.
- Credential Required: Connect Telegram credentials in Send Telegram Text.
- Credential Required: Connect Gmail credentials in Send Email Message.
Step 7: Test & Activate Your Workflow
Run a manual test to confirm the end-to-end content generation, posting, and notification flows.
- Click Execute Workflow and observe outputs from Append Topic to Generate Targeted Content and Compose Prompt.
- Confirm Render Image produces an image and Apply Watermark outputs to all social nodes.
- Verify WordPress receives the post and media via Publish WordPress Entry, Upload Media to WP, Attach Media Metadata, and Assign Featured Image.
- Check each social destination (Facebook, Telegram, LinkedIn, Discord) for a successful post.
- Once validated, toggle the workflow to Active to enable scheduled runs.
Watch Out For
- WordPress credentials can expire or need specific permissions. If things break, check your WordPress Application Passwords (or your host’s security plugin settings) 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.
Common Questions
About an hour if your API accounts are ready.
Yes, but someone needs to be comfortable connecting accounts and testing a few runs. No coding, just careful setup.
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 dollars a month at low volume) and a SerpAPI plan for search requests.
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.
You can change the location/topic in the “Append Topic” setup so the news search matches your area. If you want different writing style, adjust the prompt used by the “Compose Prompt” and “OpenAI Chat Engine” parts, then test a few runs until it sounds like you. Common tweaks include shorter Telegram captions, adding a call-to-action, and turning off platforms you don’t use (for example, keep WordPress + Telegram and disable LinkedIn or Discord posting).
Usually it’s the bot token or chat ID being wrong, or the bot not being an admin in the channel. Regenerate the Telegram Bot API token if needed, confirm the destination chat/channel ID, and check that your Telegram node in n8n is using the right credential. If you’re posting images, also make sure the workflow is passing a real binary file to Telegram, not a URL string.
On n8n Cloud, capacity is tied to your monthly execution limit, and this workflow usually uses one execution per scheduled run (every 4 hours). Self-hosting removes execution caps, but your server still needs enough CPU and memory to handle image generation steps and API calls. If you keep it at the default schedule, most setups handle it easily; the bigger constraint is API rate limits from OpenAI, SerpAPI, and WordPress security rules.
Often, yes. This workflow mixes branching logic (stop if there’s no news), multi-step media handling in WordPress (upload, metadata, featured image), and multi-channel posting with confirmations, which gets clunky fast in simpler builders. n8n also gives you the option to self-host, which matters when you’re running scheduled jobs all month. Zapier or Make can still be fine if you only need “send a message to Telegram when RSS updates” and nothing else. Talk to an automation expert if you want the fastest path for your exact stack.
Once this is running, publishing stops feeling like a daily scramble. The workflow handles the repeatable parts, and you get to focus on what’s worth your attention.
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.