How to auto-post from YouTube to Telegram
Auto-posting from YouTube to Telegram means setting up an automated pipeline that detects new videos (or shorts, live streams) on a YouTube channel and instantly shares them in your Telegram channel or group. The most common methods are RSS-based bots, dedicated integration platforms like IFTTT or Make (formerly Integromat), and self-hosted scripts using the YouTube Data API combined with the Telegram Bot API.
Why Auto-Post YouTube Content to Telegram?
Manually copying every new video link to your Telegram channel is tedious and easy to forget. Automation solves several problems at once:
- Speed: Your Telegram audience sees new uploads within minutes, not hours.
- Consistency: Every video gets shared — no accidental omissions during busy weeks.
- Formatting control: Automated posts can include the title, thumbnail, description excerpt, and a direct link in a clean, branded template.
- Cross-platform growth: Telegram subscribers discover your YouTube content faster, boosting early views and engagement signals that help the YouTube algorithm.
If you also publish your Telegram channel to the web via a service like tgchannel.space, each auto-posted video link becomes an indexed page, further expanding your content's reach in search engines.
Method 1: No-Code Platforms (IFTTT, Make, Zapier)
These are the easiest options for non-technical users. All three follow the same logic: trigger (new YouTube video) → action (send Telegram message).
IFTTT (Free Tier Available)
- Create an IFTTT account at ifttt.com.
- Click Create → If This → search for YouTube → select New public video by channel.
- Enter the YouTube channel URL or channel ID you want to monitor.
- Click Then That → search for Telegram → select Send message.
- Authorize your Telegram account when prompted (IFTTT uses its official bot
@IFTTT). - Customize the message template. A good default:
🎬 New video: {{Title}}
{{Url}}
{{Description}} (first 200 chars)
- Click Continue → Finish.
Polling interval: IFTTT free checks roughly every hour. Pro plan checks every 1–2 minutes.
Make (Integromat)
Make gives you more control over formatting and supports richer Telegram formatting (bold, inline links, images).
- Create a new scenario in Make.
- Add the YouTube → Watch Videos module. Paste the channel ID.
- Add the Telegram Bot → Send a Message module.
- Connect your Telegram bot token (create one via
@BotFatherif you haven't already). - Set the
chat_idto your channel's ID (e.g.,@yourchannelor the numeric ID like-1001234567890). - Build the message body using HTML or Markdown parse mode:
<b>{{title}}</b>
{{description_snippet}}
▶️ <a href="{{url}}">Watch on YouTube</a>
- Set the scenario to run every 15 minutes (or faster on paid plans).
Zapier
The workflow mirrors IFTTT closely. Use the New Video in Channel trigger and the Send Telegram Message action. Zapier's free tier allows 100 tasks per month, which covers most channels uploading a few times per week.
Method 2: RSS + Telegram Bot
Every YouTube channel has a built-in RSS feed. You can combine it with an RSS-to-Telegram bot for a completely free, always-on solution.
Step 1: Get the YouTube RSS Feed URL
The format is:
https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID
To find CHANNEL_ID, open the channel page, click About or check the page source for channel_id. Alternatively, use a tool like youtube.com/account_advanced for your own channel.
Step 2: Use an RSS Bot in Telegram
Several bots read RSS feeds and post updates to channels:
- @TheFeedReaderBot — popular, supports multiple feeds, customizable templates.
- @RSSly_bot — lightweight, sends updates quickly.
- @FeedlyBot — integrates with Feedly for users already on that platform.
For @TheFeedReaderBot:
- Add the bot to your Telegram channel as an administrator with "Post Messages" permission.
- Open a private chat with the bot and send
/add. - Paste your YouTube RSS URL.
- Choose the target channel.
- Configure the post template (title, link, publication date).
Pros: Completely free, no account on third-party platforms, works 24/7.
Cons: Limited formatting options, no thumbnail embedding by default, polling intervals depend on the bot's server.
Method 3: Self-Hosted Script (Python Example)
For full control — custom formatting, thumbnail previews, filtering by keywords, or posting only videos over a certain length — a small script is ideal.
Step 1: Create a Telegram Bot
- Open
@BotFatherin Telegram. - Send
/newbot, follow prompts, save the bot token. - Add the bot to your channel as an admin with posting rights.
Step 2: Get Your Channel's Chat ID
Send a test message in the channel, then call:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
Look for the chat.id field (it starts with -100 for channels).
Step 3: Write the Script
import feedparser
import requests
import time
import json
import os
BOT_TOKEN = os.environ["TG_BOT_TOKEN"]
CHAT_ID = os.environ["TG_CHAT_ID"]
CHANNEL_ID = "UC_x5XG1OV2P6uZZ5FSM9Ttw" # Example: Google Developers
FEED_URL = f"https://www.youtube.com/feeds/videos.xml?channel_id={CHANNEL_ID}"
SEEN_FILE = "seen_videos.json"
def load_seen():
if os.path.exists(SEEN_FILE):
with open(SEEN_FILE) as f:
return set(json.load(f))
return set()
def save_seen(seen):
with open(SEEN_FILE, "w") as f:
json.dump(list(seen), f)
def send_to_telegram(title, link):
text = f"🎬 <b>{title}</b>\n\n▶️ <a href=\"{link}\">Watch now</a>"
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
requests.post(url, json={
"chat_id": CHAT_ID,
"text": text,
"parse_mode": "HTML",
"disable_web_page_preview": False
})
def check_feed():
seen = load_seen()
feed = feedparser.parse(FEED_URL)
new_entries = [e for e in feed.entries if e.yt_videoid not in seen]
for entry in reversed(new_entries):
send_to_telegram(entry.title, entry.link)
seen.add(entry.yt_videoid)
time.sleep(2)
save_seen(seen)
if __name__ == "__main__":
check_feed()
Run this script via cron every 10–15 minutes:
*/10 * * * * cd /path/to/script && python3 youtube_to_tg.py
Step 4: Deploy
Options include a $5/month VPS, a free-tier cloud function (AWS Lambda, Google Cloud Functions), or even a Raspberry Pi at home. For serverless deployment on Google Cloud Functions, set the function to trigger on a Cloud Scheduler job every 10 minutes.
Method 4: n8n (Self-Hosted Automation)
n8n is an open-source alternative to Make/Zapier that you host yourself — no task limits.
- Install n8n via Docker:
docker run -it --rm -p 5678:5678 n8nio/n8n. - Create a workflow: RSS Read node (YouTube feed URL) → IF node (filter by keyword/date) → Telegram node (send message).
- Set the workflow to run on a schedule (every 5–15 minutes).
This is the best balance between flexibility and ease of use for technically comfortable users.
Tips & Best Practices
-
Include thumbnails: When using the Telegram Bot API, set
disable_web_page_previewtofalseso Telegram automatically fetches the YouTube thumbnail as a link preview. For richer formatting, download the thumbnail and send it as a photo with a caption. -
Add hashtags: Append relevant hashtags like
#YouTubeor#NewVideoso subscribers can filter content, especially in busy channels. - Throttle posts: If you upload multiple videos at once (e.g., a batch release), add a 30–60 second delay between Telegram posts to avoid flooding subscribers.
- Filter content: Not every upload may be relevant. Use keyword filters to skip shorts, community posts, or unlisted videos if your audience only wants full-length content.
-
Track performance: Monitor which YouTube posts get the most Telegram views. Use UTM parameters in links (
?utm_source=telegram&utm_medium=channel) to measure traffic in YouTube Analytics. - Combine with web indexing: Channels published through tgchannel.space benefit doubly — each auto-posted YouTube link becomes a web-indexed page, improving discoverability through Google as well as Telegram search.
Common Mistakes
Mistake 1: Forgetting to give the bot admin rights
Why it happens: You add the bot to the channel but skip the admin promotion step. The bot silently fails to post.
How to avoid: After adding the bot, go to channel settings → Administrators → add the bot with at least "Post Messages" permission.
Mistake 2: Using the wrong chat ID format
Why it happens: Channel IDs must include the -100 prefix (e.g., -1001234567890). Using just the numeric part or the @username without testing causes delivery failures.
How to avoid: Always verify by calling getUpdates or getChat on the Bot API before setting up automation.
Mistake 3: Setting polling intervals too aggressively
Why it happens: Checking YouTube's RSS feed every 30 seconds seems logical for speed, but YouTube's feed updates are not instant — they typically lag 5–15 minutes behind the actual upload.
How to avoid: Poll every 10–15 minutes. Faster polling wastes resources and hits rate limits without delivering faster results.
Mistake 4: Not handling duplicate posts
Why it happens: If your script crashes mid-run or restarts, it may re-send videos it already posted.
How to avoid: Always persist a list of seen video IDs (in a file, database, or key-value store) and check against it before posting.
Frequently Asked Questions
Can I auto-post only YouTube Shorts to Telegram?
Yes. YouTube Shorts appear in the same RSS feed as regular videos. In your automation, filter by the video URL — Shorts use the path /shorts/VIDEO_ID. In Make or n8n, add a filter node checking if the URL contains /shorts/.
Will the YouTube thumbnail appear in the Telegram post?
When you send a YouTube link via the Bot API with disable_web_page_preview set to false, Telegram's link preview system fetches the thumbnail automatically. For more control, download the maxresdefault.jpg thumbnail and send it as a photo message with the video link in the caption.
Can I auto-post from multiple YouTube channels to one Telegram channel?
Absolutely. In IFTTT or Make, create one applet/scenario per YouTube channel, all targeting the same Telegram channel. With the Python script, loop through a list of channel IDs. RSS bots like @TheFeedReaderBot support adding multiple feeds to the same channel natively.
Is there a way to auto-post YouTube live stream announcements?
YouTube's RSS feed does not include upcoming live streams reliably. For live stream detection, use the YouTube Data API v3 with the search.list endpoint filtered by eventType=upcoming. This requires an API key and a more advanced script, but it works well for channels that stream regularly.
Does auto-posting violate YouTube or Telegram's terms of service?
No. Sharing public video links is standard behavior. YouTube explicitly provides RSS feeds for this purpose, and the Telegram Bot API is designed for automated posting. Just avoid spamming (hundreds of posts per minute) and you are well within acceptable use.