Blogger + Telegram: publish-ready posts without busywork
Publishing consistently sounds simple until you’re the one chasing ideas, formatting HTML, hunting images, and double-checking that the post actually went live. It’s not hard work. It’s the constant context switching that drains you.
Content marketers feel it first, honestly. But local business owners running a Blogger site and agency leads managing multiple blogs run into the same wall. This Blogger Telegram automation turns trending headlines into publish-ready posts and pings you in Telegram when it’s done.
You’ll see what the workflow automates, what results it creates, and what you need to run it without babysitting every publish.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Blogger + Telegram: publish-ready posts without busywork
flowchart LR
subgraph sg0["Scheduled Automation Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Scheduled Automation Trigger", pos: "b", h: 48 }
n1["<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 Success Notice"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Retrieve Tech Headlines"]
n3@{ icon: "mdi:robot", form: "rounded", label: "Compose Blog Article", pos: "b", h: 48 }
n4@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Engine 2", pos: "b", h: 48 }
n5@{ icon: "mdi:swap-vertical", form: "rounded", label: "Sanitize HTML Content", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Generate Slug Metadata", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Engine", pos: "b", h: 48 }
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/code.svg' width='40' height='40' /></div><br/>Parse JSON Output"]
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/>Publish Blog 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/>Dispatch Image Alert"]
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/httprequest.dark.svg' width='40' height='40' /></div><br/>Request Stock Images"]
n8 --> n3
n6 --> n8
n9 --> n1
n5 --> n9
n11 --> n10
n2 --> n11
n0 --> n2
n3 --> n5
n10 --> n6
n7 -.-> n6
n4 -.-> n3
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 n3,n6 ai
class n4,n7 aiModel
class n2,n9,n11 api
class n8 code
classDef customIcon fill:none,stroke:none
class n1,n2,n8,n9,n10,n11 customIcon
The Problem: Blogging Turns Into Busywork
Keeping a blog alive is rarely about “writing.” It’s the stuff wrapped around writing. You start by searching for what’s trending, then you try to turn a headline into something relevant for your audience. Next comes images, SEO formatting, and the little technical landmines (broken HTML, weird spacing in Blogger, missing metadata). Then you publish and still wonder: “Did it post correctly?” because you’ve been burned before. After a few weeks, the calendar slips. And slipping is expensive, because the whole point of content is momentum.
The friction compounds. Here’s where it breaks down.
- Finding a decent topic can take about 30 minutes, and you still second-guess it.
- Formatting for Blogger isn’t “copy/paste” when your headings, images, and FAQs need clean HTML.
- Image sourcing becomes a mini-project, especially when you want relevant visuals instead of random stock photos.
- Without a confirmation loop, you end up checking drafts, feeds, and links manually after every publish.
The Solution: Trending News to Blogger Posts (With Telegram Proof)
This workflow runs on a schedule and builds a complete post pipeline for you. It starts by pulling trending technology headlines from Mediastack, then requests matching stock images from the Pexels API so the post doesn’t look bare. After that, AI agents generate an SEO-rich article designed to be publishable, not “rough draft” quality. The workflow sanitizes and formats the content into Blogger-friendly HTML (titles, metadata, images, FAQs, and internal linking structure), then publishes directly to your Blogger site through the Google Blogger API. Finally, Telegram messages give you a preview and a clear success confirmation so you’re not guessing.
The workflow begins with a scheduled trigger. It pulls a headline, finds images, and generates the post content. Then it cleans the HTML, creates slug-style metadata, publishes to Blogger, and messages you in Telegram when the post is live.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you publish 4 posts a week. Manually, you might spend about 30 minutes finding a topic, about 60 minutes drafting, then another 30 minutes getting images, formatting HTML, and publishing in Blogger. That’s roughly 8 hours a week. With this workflow, you spend maybe 10 minutes reviewing what got generated and adjusting a few lines for your brand, while the scheduled run does the rest in the background. You get most of your week back, without ghosting your blog.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Telegram for previews and publish confirmations
- Google Blogger API access to publish posts into Blogger
- Mediastack API key (get it from your Mediastack dashboard)
- Pexels API key (get it from your Pexels developer account)
- OpenRouter API key (get it from your OpenRouter account settings)
Skill level: Intermediate. You will connect a few accounts, add API keys, and paste in your Blogger site details.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
Scheduled trigger fires. The workflow runs automatically on the timing you choose, so content creation doesn’t depend on someone remembering.
Trending headlines are collected. An HTTP request pulls fresh technology headlines from Mediastack, then the workflow selects what it will write about.
Images and the full draft are generated. Another request grabs relevant stock images from Pexels, then AI (LangChain with OpenRouter behind it) writes an SEO-oriented post based on the headline and your formatting requirements.
HTML is cleaned and the post is published. The content gets sanitized into Blogger-compatible HTML, slug metadata is generated, and the Blogger API publishes it. Telegram then sends you a preview/alert and a success notice after posting.
You can easily modify the news category to a niche that matches your business, so the automation stays relevant instead of producing filler. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Scheduled Trigger
Set the workflow’s schedule so it runs automatically and kicks off the content pipeline.
- Add and open Scheduled Automation Trigger.
- Set the schedule rule to run every minute by keeping the default interval settings (minutes).
- Connect Scheduled Automation Trigger to Retrieve Tech Headlines.
Step 2: Connect the News and Image Data Sources
Pull the latest tech headline and request related stock images to enrich the generated article.
- Open Retrieve Tech Headlines and set URL to
https://api.mediastack.com/v1/news?categories=technology&limit=1&languages=en. - Credential Required: Connect your httpQueryAuth credentials in Retrieve Tech Headlines.
- Open Request Stock Images and set URL to
https://api.pexels.com/v1/search. - Enable Send Query and set query to
{{ $json.data[0].title }}and per_page to2. - Credential Required: Connect your httpHeaderAuth credentials in Request Stock Images.
- Connect Retrieve Tech Headlines → Request Stock Images → Dispatch Image Alert.
- In Dispatch Image Alert, set Text to
=🖼 Generating Image ... ------------------------------ {{ $json.photos[0].src.landscape }} ------------------------------ {{ $json.photos[1].src.landscape }}and Chat ID to$vars.telegramchatid. - Credential Required: Connect your telegramApi credentials in Dispatch Image Alert.
$vars.telegramchatid is not set in your environment variables, Dispatch Image Alert will fail. Add it in your n8n instance variables before testing.Step 3: Generate Slug Metadata and Parse the AI JSON
Use the AI agent to generate slug, title, and meta description, then parse the JSON output for downstream use.
- Open Generate Slug Metadata and keep the prompt as-is. It uses
{{ $json.data[0].title }}from the headline. - Confirm that OpenRouter Chat Engine is connected as the language model for Generate Slug Metadata.
- Credential Required: Connect your openRouterApi credentials in OpenRouter Chat Engine (credentials are set on the language model node, not the agent).
- Open Parse JSON Output and keep jsCode as provided to clean the JSON:
const rawInput = $input.first().json.output; const cleaned = rawInput.replace(/```json|```/g, '').trim(); const jsonObject = JSON.parse(cleaned); return [jsonObject]; - Connect Dispatch Image Alert → Generate Slug Metadata → Parse JSON Output.
Step 4: Set Up the Article Generation AI
Generate the full HTML blog post using structured AI prompts, injecting the headline, metadata, and image URLs.
- Open Compose Blog Article and keep the prompt intact, including the references to
{{ $('Parse JSON Output').first().json.title }},{{ $('Parse JSON Output').first().json.meta }}, and image URLs from Request Stock Images. - Verify OpenRouter Chat Engine 2 is connected as the language model for Compose Blog Article.
- Credential Required: Connect your openRouterApi credentials in OpenRouter Chat Engine 2 (credentials are set on the language model node, not the agent).
- Connect Parse JSON Output → Compose Blog Article.
Step 5: Sanitize, Publish, and Notify
Clean the HTML output, publish it to Blogger, and send a success alert via Telegram.
- Open Sanitize HTML Content and set content to
{{ $json.output.replaceAll('```html', '').replaceAll('```','') }}. - Open Publish Blog Post and set URL to
https://www.googleapis.com/blogger/v3/blogs/$vars.bloggerid/posts. - Set Method to POST and JSON Body to the provided payload, including
{{ $('Parse JSON Output').first().json.title }}and{{ $json.content.replaceAll("\n","").replaceAll("\"","'").replaceAll('> <',"").replaceAll('> <',"").split("\n\n") }}. - Enable Send Body and Send Headers, and set header Content-Type to
application/json. - Credential Required: Connect your oAuth2Api credentials in Publish Blog Post (this node currently has no credentials configured).
- Open Send Success Notice and set Text to
=Success! Your blog post was created at {{ $now }} title : {{ $('Parse JSON Output').item.json.title }}and Chat ID to$vars.telegramchatid. - Credential Required: Connect your telegramApi credentials in Send Success Notice.
- Connect Compose Blog Article → Sanitize HTML Content → Publish Blog Post → Send Success Notice.
$vars.bloggerid. Ensure this environment variable is set, or the Blogger API call will fail.Step 6: Test and Activate Your Workflow
Run a manual test to validate data flow, AI generation, and publishing, then activate for production use.
- Click Execute Workflow to run from Scheduled Automation Trigger.
- Confirm Retrieve Tech Headlines returns a tech headline and Request Stock Images returns two images.
- Verify Generate Slug Metadata outputs valid JSON and Parse JSON Output returns structured fields.
- Check that Compose Blog Article produces HTML and Sanitize HTML Content removes any code fences.
- Validate that Publish Blog Post creates a post in Blogger and Send Success Notice sends a Telegram message with the title.
- Once verified, toggle the workflow to Active to enable scheduled publishing.
Common Gotchas
- Google Blogger API credentials can expire or need specific permissions. If things break, check your Google Cloud Console OAuth consent and the connected account inside n8n 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 45 minutes if your API keys are ready.
No. You’ll mostly connect accounts, paste API keys, and choose your schedule.
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 OpenRouter usage plus Mediastack and Pexels API costs, which are usually low at small-business volumes.
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 it’s one of the best tweaks you can make. Swap the Mediastack request to a different category, or change the headline source entirely, then update the “Compose Blog Article” agent prompt so the AI writes for your industry. Many teams also adjust the “Sanitize HTML Content” step to match their preferred formatting (shorter intros, different heading style). If you want location-based content for an auto service site, push your city and service list into the prompt so every post stays locally relevant.
Most of the time it’s an invalid or rotated bot token, or the bot was never added to the chat you’re messaging. Update the Telegram credentials in n8n and re-check the chat ID. Also confirm your bot has permission to send messages in that channel or group, because Telegram will quietly block it.
If you self-host, there’s no execution cap (your server is the limit), and most small sites run daily or a few times a week without strain. On n8n Cloud, it depends on your plan’s monthly executions, but a daily post schedule is typically fine. The practical limit is usually your AI and news/image API quotas, not n8n itself.
Often, yes. This workflow isn’t just “move data from A to B”; it fetches headlines, generates long-form content, cleans HTML, then publishes through an API, which is the kind of multi-step logic n8n handles comfortably. You also get a self-hosting option, which matters when you want lots of runs without paying per task. Zapier or Make can still work if you keep it simple and don’t need heavy content generation. If you want help choosing, Talk to an automation expert and you’ll get a straight recommendation.
Once this is running, your blog stops depending on “finding time.” The workflow handles the repetitive parts, and you only step in when you want to refine or steer the strategy.
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.