Автопостинг RSS у Telegram: покрокове налаштування 2026

Автопостинг RSS у Telegram: покрокове налаштування 2026
Коротко. Налаштування автопостингу RSS у Telegram-канал — це п'ять конкретних кроків: провести аудит фіду, вибрати стек (власний бот, IFTTT/Zapier/Make або керований інструмент на кшталт Autogram), підібрати частоту опитування під реальний ритм публікацій, дедуплікувати за GUID до того, як Bot API узагалі побачить пейлоад, та оформити кожен айтем у MarkdownV2 з охайним прев'ю посилання. Шар AI-перепису згори перетворює потік на читабельний дайджест.
Передумови
Photo by Michael Dupuis on Pexels
Перш ніж під'єднувати фід до каналу, переконайтеся, що готові:
- Робочий URL RSS- або Atom-фіду. Ви або власник джерела (блог, подкаст, внутрішній статус-фід), або маєте дозвіл на синдикацію. Перевикористання чужого фіду без дозволу — це спершу копірайт, а вже потім SEO: пара «канал ↔ домен» у графах синдикації б'є по обох сторонах.
- Telegram-канал і бот, який є адміном у ньому. Створіть бота через @BotFather, додайте у канал, видайте права адміна з дозволом Postiti (Postiting messages). Без адміна кожне відправлення віддає
Bad Request: chat not foundабоForbidden. - Постійне сховище для «останній побачений айтем». Достатньо плоского файлу або ключа в Redis — потрібно десь пам'ятати, які GUID вже відіслано, інакше повторне читання фіду заллє канал останніми 20 айтемами.
- Bot API токен поза git. Тримайте в env-змінній, секрет-сторі або у
.env, який не комітиться. Зливи токенів у комітах вичитують скрейпери за години.
Якщо є сумніви, чи фід валідний — прожене URL через W3C Feed Validation Service. Невалідний фід ламає парсери так, що це виглядає як мережева помилка, і регулярно з'їдає годину часу на дебаг.
Крок 1 — Зробіть аудит фіду до того, як йому довіритися
Найшвидший спосіб запустити поламаний RSS-у-Telegram — пропустити аудит. Половина продакшен-інцидентів, які я дебажив у цій інтеграції, виявлялися квірками джерела, а не багами Telegram.
- Витягніть фід руками:
curl -sS <feed-url> | xmllint --format -і перечитайте. Переконайтеся, що в кожному айтемі є<guid>(або<id>для Atom) — без стабільного GUID на айтем немає чим дедуплікувати, і ви будете дублити. - Зафіксуйте типову частоту виходу айтемів. Блог, що публікує двічі на тиждень, потребує опитування раз на 6–12 годин; новинна стрічка з 200 айтемами на день — раз на 2–5 хвилин. Швидше — палить квоту даремно; повільніше — губить айтеми, бо фід обрізається до останніх N.
- Перевірте формат
<pubDate>. RFC 822 (RSS) і RFC 3339 (Atom) обидва валідні; деякі фіди шлють «креативні» дати на кшталт «Fri, 22 Apr 2026 14:00 GMT+0:00», які строгі парсери відкидають. Беріть толерантний парсер або нормалізуйте при зчитуванні. - Подивіться, який HTML лежить у тілі айтема. Telegram приймає вузький підмножину MarkdownV2 / HTML —
<table>,<iframe>, інлайн-скрипти, більшість тегів з атрибутами треба викидати. Місце, де це треба знайти — аудит, а не перший продакшен-сенд о третій ночі. - Перевірте
<enclosure>/media:contentна наявність зображень. Якщо фід тягне зображення, краще використовуватиsendPhotoзамістьsendMessageдля багатшого прев'ю. Якщо ні —sendMessageзdisable_web_page_preview: falseнайдешевший шлях, бо Telegram сам забере Open Graph картинку з URL статті.
Чесний десятихвилинний аудит економить тиждень тікетів «чому бот тричі запостив той самий айтем».
Крок 2 — Виберіть правильний стек: нативно vs third-party vs керований
Конфігурацій RSS-у-Telegram три. Вибирайте за командою, а не за хайпом:
| Стек | Час налаштування | Вартість на айтем | Кастомізація | Кому підходить |
|---|---|---|---|---|
Власний бот-воркер (Python feedparser + python-telegram-bot, на VPS / cron) | 2–6 годин | Безкоштовно (ваш хостинг) | Повна | Інженерним командам, які вже тримають воркери; одиничним внутрішнім фідам |
| IFTTT / Zapier / Make / n8n | 15–30 хв на фід | $5–$50/міс на ~1k айтемів | Низька–середня (шаблонна) | Маркетинг-командам без розробників; малій кількості фідів |
| Керований Telegram-інструмент (Autogram, ManyBot, Posterly) | 5–10 хв | Включено в плоский тариф | Середня–висока, залежить від тулу | Мультиканальним публішерам, AI-rewrite кейсам, тим хто не хоче бавитись з воркерами |
Кілька гострих кутів:
- RSS-тригер IFTTT опитує раз на ~15 хвилин мінімум і тихо губить айтеми, якщо джерело пише частіше. Для активних новинних стрічок IFTTT втрачає матеріал.
- Zapier і Make тарифікують по тасках. Фід на 50 айтемів у день — це 1500 тасків на місяць на одну мову. Тарифу Zapier Starter це з'їдає весь місячний пакет одним фідом.
- n8n — найкращий self-hosted варіант, якщо у вас уже є Docker; ланцюжок «RSS Read → Telegram → Set (для дедуплікації)» вкладається у 4 ноди.
- Власний воркер найдешевший на масштабі, але ви володієте всім: фейловер, рестарт після крешу, MarkdownV2 escape, фолбек зображень — усе. Що значить «володіти всім», розписано у гайді по масовій розсилці в Telegram.
- Керовані тули обмінюють вартість на айтем на нуль ops і час налаштування. Правильна відповідь, якщо ви воліли б годинами займатись контентом, а не
systemd-юнітами.
Сайд-бай-сайд no-code варіантів — у порівнянні no-code автоматизації Telegram.
Крок 3 — Налаштуйте частоту опитування і дедупліцуйте без жалю
Photo by Christina Morillo on Pexels
Опитування і дедуплікація — два важелі, які відрізняють робочий пайплайн від шумного. Налажете — або шлете дублі, або губите новини.
- Інтервал опитування — половина медіанного інтервалу між публікаціями фіду. Якщо фід виходить у середньому раз на 20 хвилин — опитуйте раз на 10. Дає запас без палення квоти. Ніколи не опитуйте частіше за раз на 60 секунд для одного фіду — джерело розцінить це як зловживання і заблочить.
- Завжди шліть умовний GET. Заголовки
If-Modified-SinceтаIf-None-Matchна кожному опитуванні; відповідь 304 — безкоштовна і у більшості джерел не зараховується у квоту. Хости фідів, чутливі до трафіку, тихо троттлять, якщо ви цього не робите. - Дедуплікуйте за GUID, не за URL і не за заголовком. Деякі фіди ротують URL (трекерські параметри змінюються щодня), інші перевикористовують заголовки (тижневі рекапи). Елемент
<guid>— єдине, що специфікація гарантує стабільним. - Зберігайте GUID між рестартами. Бот, який перезапустився і забув, що вже шипив, перепостить весь поточний вікно фіду — типово останні 20–50 айтемів. Підписники бачать це як спам і відписуються пачками. Достатньо одного рядка SQLite-таблиці.
- Додайте захист «максимальний вік». На першому запуску постіть тільки айтеми молодші за, скажімо, 24 години. Інакше у перший день канал заллє історичним вікном і алгоритм навчиться придушувати ваші повідомлення.
- Обмежте кількість айтемів на цикл. Якщо фід стрельнув (новинне джерело після події), 200 повідомлень за 30 секунд тригернуть телеграмний ліміт 1 повідомлення/сек на канал та глобальний 30 повідомлень/сек. Кеп — 5 повідомлень на цикл, решта дочекається наступного циклу.
Псевдокод циклу:
seen = load_seen_guids() # set[str], персистентний на диск
feed = feedparser.parse(URL, modified=last_modified, etag=last_etag)
if feed.status == 304:
return
new_items = [e for e in feed.entries if e.id not in seen and is_recent(e, hours=24)]
for item in new_items[:5]: # запас на rate limit
send_to_telegram(item)
seen.add(item.id)
save_seen_guids(seen)
save_etag(feed.etag, feed.modified)
Це і весь цикл. Усе інше — ретраї, експоненційний бекоф, dead-letter — додається зверху.
Крок 4 — Форматування: ентіті, прев'ю і робота з зображеннями
Дефолтний форматер RSS-у-Telegram вставляє заголовок і посилання. Підписники таке ігнорують. Формат, який реально клікають — це заголовок + 1–3 речення з тіла + прев'ю посилання + (де доречно) зображення.
- Чистіть HTML з
<description>/<content:encoded>перед відправкою. Беріть парсер на кшталтbleachчиhtml2text; ніколи не парсіть HTML регулярками — рано чи пізно ви проекспейпите ентіті не так і відправите наполовину поламаний<a>-тег у канал. - Обрізайте тіло до ~280 символів і додавайте
…. Довгі повідомлення Telegram згортають прев'ю посилання, а саме воно зазвичай і чіпляє око. - Екрануйте спецсимволи MarkdownV2. Список:
_*[]()~`>#+-=|{}.!. Пропустите один —sendMessageвіддастьBad Request: can't parse entities. Повний дебаг-гайд по цьому фейлу — у специфікації MarkdownV2 від Telegram. - Виберіть правильний метод відправки:
- Зображення немає, тіло коротке →
sendMessageзdisable_web_page_preview: false. Telegram сам забере Open Graph і покаже карточку. - Тіло довге, є зображення →
sendPhotoзcaption(ліміт 1024 символи). Прев'ю посилання обрізається, зате зображення інлайн. - Кілька зображень на айтем →
sendMediaGroup(макс. 10). Підпис кріпиться лише до першого айтема в групі.
- Зображення немає, тіло коротке →
- Додавайте маленький футер атрибуції. Щось на кшталт
via [Назва джерела](https://source.example.com)— це чесно і не дозволяє читачеві сприйняти контент як «оригінальний», що часто веде до скарг. Бонус: пости перестають мати вигляд позначки «Переслано», яка душить охоплення.
Зразок MarkdownV2-пейлоаду:
*Новий реліз — Postgres 18\\.0*
Postgres 18 виходить зі skip\\-scan індексами та новим протоколом фейловера логічної реплікації\\. Wire\\-протокол сумісний з libpq 17\\.
[Прочитати повний анонс](https://www.postgresql.org/docs/release/18.0/) · via [Postgres News](https://www.postgresql.org/about/newsarchive/)
Зверніть увагу: кожна . , ( ) - екранована — так, навіть всередині дужок URL.
Крок 5 — Розклад, маршрутизація і AI-дайджест
Photo by Brett Jordan on Pexels
Коли базовий пайплайн поїхав, три апгрейди швидко себе окуплюють:
- Тихі години на канал. B2B-аудиторія читає Telegram у 09:00–22:00 за локальним часом. Пости о 04:00 навчають підписників мутити канал. Айтеми, що прийшли вночі, треба буферити у ранковий бурст о 09:00 (з кепом на 5 — див. Крок 3).
- Роутинг по каналах за тематикою. Якщо синдикуєте один фід у кілька ніш, маршрутизуйте за тегом категорії — ніколи не лійте однакові айтеми скрізь. Audience-overlap аудит важливіший за кількість айтемів.
- AI-перепис. Проганяйте кожен айтем через модель з компактним промптом — «Підсумуй у 2 реченнях, починай із конкретного факту, не з рамки». Вихід коротший, читабельніший і не несе характерного «синдикованого» духу. Тримайте окремий рахунок витрат на перепис, щоб знати реальну економіку на айтем.
Autogram закриває кроки 1–5 нативно без воркера. Ви вставляєте URL фіду, обираєте канал (або кілька), переключаєте режим bare forward ↔ AI rewrite, задаєте вікна публікацій — а платформа вже сама опитує, дедуплікує, екранує MarkdownV2, робить фолбеки на зображення і шле з урахуванням rate-limit. Та сама примітива планування, що тягне руковий контент, проганяє RSS-айтеми через ту саму чергу публікацій — нема двох cadence-двигунів, які треба тримати в голові. Внутрішній пайплайн опитує кожен фід і дедуплікує за GUID, тож сплеск ніколи не подвоїть дописи, і доставляє щонайбільше один новий айтем за запланований запуск на канал, щоб залишатися всередині per-chat envelope Telegram.
Якщо ви хочете тримати воркер самі — псевдокод з Кроку 3 плюс правила Кроку 4 дають парітет за вихідні. Сенс гайда — щоб ви знали, який саме обмін робите.
Поширені помилки
- Без дедуплікації за GUID. Перепостить усе вікно фіду після кожного рестарту. Лік: персистентний сет побачених GUID.
- Опитування раз на хвилину для фіду «раз на день». Палить 1400 марних опитувань на день — найшвидший шлях отримати IP-бан від джерела. Лік: cadence — половина медіанного інтервалу публікацій.
- Пропуск екранування MarkdownV2.
sendMessageмовчки повертає 400 у скриптах, які не перевіряють відповідь, тож канал просто стихне. Лік: екранувати завжди і ассертитиok: true. - Постинг зображень за URL без перевірки розміру. Telegram кепить
sendPhotoна 5 MB по URL (ліміт 10 MB діє лише при завантаженні через multipart). Більші —Bad Request: file is too big. Лік: HEAD-запит, фолбек наsendMessageз прев'ю посилання, якщо понад ліміт. - Забути per-channel rate limit на бурстових фідах. Фід, що скинув 50 айтемів за хвилину (новинне джерело після події), на 31-му тригерне 429
RetryAfterі тихо втратить решту. Лік: cap-per-cycle + черга + ретрай поRetryAfter.
Пов'язане читання
- Масова розсилка в Telegram: гайд для досвідчених — операційний плейбук для будь-якого пайплайна, який шле більше кількох сотень айтемів на день, з патернами черги, ретраю і DLQ.
- No-code автоматизація Telegram: Zapier vs Make vs ManyBot vs Autogram — матриця no-code стеків з Кроку 2 з реальною економікою на айтем.
- Автопостинг у Telegram без позначки «Переслано» — чому RSS-репости з виглядом форварду душать охоплення і які саме формат-фіксы це лікують.
- Ліміти Telegram Bot API на масштабі — конкретні числа за правилом «cap items per cycle» з Кроку 3, з прикладами
RetryAfter-логів.
FAQ
Який інтервал опитування правильний для Telegram RSS-бота?
Половина медіанного інтервалу публікацій фіду, з підлогою у 60 секунд і стелею у 24 години. Блог, що пише двічі на тиждень — раз на 6–12 годин; новинна стрічка з 200 айтемами на день — раз на 2–5 хвилин. Завжди парте з умовним GET (If-Modified-Since / If-None-Match), щоб незмінні опитування поверталися 304 і не з'їдали квоту.
Чи можна слати RSS-айтеми як фото в Telegram?
Так — використовуйте sendPhoto, коли в айтема є придатне зображення (до 5 MB по URL — або до 10 MB при multipart-завантаженні, JPEG або PNG, ландшафтна орієнтація читається найкраще). Для кількох зображень — sendMediaGroup шле до 10 в одному пакеті. Якщо зображення немає або воно завелике, фолбек на sendMessage з disable_web_page_preview: false — і нехай Open Graph фетчер Telegram малює прев'ю.
Як дедуплікувати RSS-айтеми, щоб не постити одну й ту саму статтю двічі?
Зберігайте сет побачених <guid> (або Atom <id>) на диск чи в key-value store і перевіряйте belonging перед кожною відправкою. Не дедуплікуйте за URL чи заголовком — фіди ротують трекерські параметри і перевикористовують заголовки в тижневих рекапах. На кожному рестарті перезавантажуйте сет; без персистентності ви знов відправите все вікно фіду наступного разу, коли воркер перезапуститься.
Чи можна додати AI-сумаризацію до Telegram RSS-бота?
Так, і для високооб'ємних фідів це зазвичай окуповується. Проганяйте тіло кожного айтема через модель з вузьким промптом «Два речення. Починай з конкретного факту, не з рамки» і шліть перепис замість сирого опису. Слідкуйте за вартістю на айтем — на 100 айтемах у день дешева модель — це кілька доларів на місяць; дорога — кілька сотень.
Чому мій Telegram RSS-бот після рестарту знов шле дублі?
Бо сет побачених GUID живе в пам'яті і чиститься при рестарті. Перенесіть його на диск (SQLite, плоский JSON, Redis — будь-що персистентне) і завантажуйте при старті. Заодно збережіть ETag і Last-Modified з останнього успішного опитування — щоб трюк з умовним GET теж пережив рестарти.
Мені потрібен сервер під воркер для RSS-у-Telegram, чи є no-code варіант?
Працюють обидва шляхи. No-code (IFTTT, Zapier, Make, n8n або керований інструмент типу Autogram) виводить у прод за 5–30 хвилин без жодного сервера; нативний бот-воркер — більше часу на налаштування, зате повний контроль і нижча вартість на айтем на масштабі. Рішення в основному залежить від кількості фідів і того, наскільки кастомне форматування потрібне — див. таблицю в Кроці 2.
Підсумок
Автопостинг RSS у Telegram — це п'ять конкретних кроків, не магія: аудит фіду, вибір стеку, правильний cadence, дедуплікація за GUID і нормальне форматування у MarkdownV2 з адекватним фолбеком на зображення. Перша версія займе вихідні, якщо писати воркер самому, або хвилин десять — якщо віддати керованому інструменту. Autogram робить опитування, дедуплікацію, форматування, rate-limit і AI-перепис в одному місці — вставили URL фіду, обрали канал, готово.
Image credits
- Hero: Photo by Michael Dupuis on Pexels.
- Inline #1: Photo by Christina Morillo on Pexels.
- Inline #2: Photo by Brett Jordan on Pexels.
Схожі публікації

Як додати Telegram Mini App до каналу: монетизація без коду у 2026
Покроковий гайд: як підключити Telegram Mini App до свого каналу та отримувати зірки від підписників — без жодного рядка коду.

TON до фіату для операторів каналів: виведення через Fragment
Покроковий посібник з виведення доходу Telegram-каналу — TON із реклами та зірок — через Fragment, конвертації на біржі та зарахування на банківський рахунок.

Повернення Telegram Stars: як насправді працює refundStarPayment
Коли повертати Telegram Stars, як викликати refundStarPayment, чому немає часткових повернень, обробка /paysupport і чиста звірка в обліку.
Підпишіться на нашу розсилку
Отримуйте найновіші поради з розвитку Telegram, стратегії автоматизації та оновлення платформи на вашу пошту.
Або підпишіться на наш Telegram-канал