בשביל מי שמתעקש על חדשות טריות בלי להציץ באפליקציות נוספות, סוכן RSS אישי בטלגרם הוא פתרון מושלם. הוא סורק פידים מועדפים כמו Hacker News או The Marker Techtime, ומשלח רק את הכתבות הרלוונטיות לצ'אט הפרטי שלכם. בנינו אחד כזה בסוף השבוע, תוך 30 דקות בדיוק. השתמשנו ב-Claude Code, כלי קידוד מתקדם של Anthropic, שיצר את רוב הקוד. התוצאה: בוט שרץ על שרת $5 לחודש ב-DigitalOcean, מעדכן כל 15 דקות. אם אתם מפתחים חובבים או סתם אוהבי אוטומציה, זה פרויקט שמתאים לכולם. בואו נפרק את התהליך צעד אחר צעד, עם קוד מלא וטיפים למלכודות נפוצות.
שלב ראשון: יצירת בוט טלגרם והשגת טוקן
הכל מתחיל ב-BotFather, הבוט הרשמי של Telegram לבניית בוטים. פתחו את טלגרם, חפשו @BotFather ושלחו /newbot. הוא יבקש שם וביטוי ייחודי, כמו myrssagent_bot. תוך שניות תקבלו טוקן API ארוך, משהו כמו 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. שמרו אותו בסוד - זה המפתח לבוט שלכם.
עכשיו, כדי שהבוט ישלח הודעות לכם, צ'טו איתו ושלחו /start. קחו את ה-chat_id שלכם מהתשובה (או השתמשו בכלי כמו @userinfobot). לדוגמה, chat_id שלי הוא 123456789. זהו, יש לנו את שני הפרמטרים הבסיסיים: BOT_TOKEN ו-CHAT_ID. ללא טוקן תקין, שום דבר לא יעבוד. Telegram מגביל בוטים ל-30 הודעות בשנייה, אז אל תשלחו ספאם.
בדקנו את זה מיד: שילחנו הודעת test דרך curl. פקודה פשוטה כמו curl -X POST https://api.telegram.org/bot<TOKEN>/sendMessage -d chat_id=<ID> -d text="Hello". אם רואים בלון בצ'אט, הכל תקין. שלב זה לוקח 2-3 דקות, ובלעדיו אין המשך.
טיפ: אם הבוט לא מגיב, בדקו שהטוקן הודבק נכון - טעות אחת וזה נכשל בשקט.
שלב שני: הגדרת מקורות RSS אישיים
בחרו 3-5 פידים רלוונטיים. לדוגמה, Hacker News RSS בכתובת https://news.ycombinator.com/rss, או TechCrunch https://techcrunch.com/feed/. בישראל, נסו TheMarker Techtime: https://www.themarker.com/technation/rss/. צרו רשימה במערך JSON פשוט, עם URL ומילות מפתח לסינון. זה ימנע הצפה בהודעות מיותרות.
דוגמה לזרימת עבודה: הסוכן סורק את Hacker News כל 15 דקות. הוא בודק כותרות חדשות מאז הרץ אחרון (משתמש בשעת timestamp). אם הכותרת מכילה 'AI' או 'Israel', הוא שולח קישור + תקציר. ככה קיבלתי 4 עדכונים ביום על AI ישראלי, בלי רעש. זה חוסך זמן בהשוואה למיילים או אפליקציות כמו Feedly.
הוסיפו הגדרות נוספות: מקסימום 5 הודעות לרץ, כדי להתאים למגבלות Telegram. השתמשו בספרייה rss-parser ב-Node.js, שמטפלת בפרסינג XML. היא תומכת ב-encoding UTF-8, חיוני לעברית.
למה RSS עדיין רלוונטי? למרות שרוב האתרים עברו ל-APIs, RSS פשוט ופרטי. אין צורך בהרשאות, והוא עובד offline.
שלב שלישי: יצירת הסקריפט עם Claude Code
כאן נכנס Claude Code, תכונה חדשה של Anthropic שמייצרת קוד מלא משאילתה טבעית. פתחו את Claude.ai, הזינו: "כתוב סקריפט Node.js שסורק RSS feeds, מסנן לפי מילות מפתח ומשלח לטלגרם. השתמש ב-rss-parser, node-fetch, fs לסטורג state. הגדר cron כל 15 דקות." תוך 30 שניות קיבלתם קוד מוכן, כ-150 שורות.
הקוד כולל: קריאת config.json עם RSS_URLS, KEYWORDS, BOT_TOKEN, CHAT_ID. פרסינג feed.items, השוואה ל-state.json (רשימת guid קודמים), שליחת POST ל-Telegram API. שמירת state חדש. Claude טיפל ב-error handling, כמו timeouts ב-fetch.
התאמנו קלות: הוספנו תמיכה בעברית עם Buffer.from('text', 'utf8'). הרצנו מקומית עם node index.js - עבד מושלם, 3 כותרות חדשות מ-Hacker News. Claude חסך לנו שעות debug, בהשוואה לכתיבה ידנית.
דוגמת קוד חלקית: const parser = new RssParser(); const feed = await parser.parseURL(rssUrl); for(let item of feed.items.slice(0,10)){ if(item.title.includes(keyword) && !seenGuids.includes(item.guid)){ await sendTelegram(item.title + ' ' + item.link); } }. פשוט ויעיל.
שלב רביעי: פריסה על Droplet ב-DigitalOcean
DigitalOcean מציעה Droplets מ-5 דולר לחודש, עם 1GB RAM מספיק. צרו חשבון, בחרו Ubuntu 22.04, התקינו Node.js עם nvm. העלו קבצים via scp: scp -r . root@IP:/root/rssbot.
התקינו תלויות: npm init -y; npm i rss-parser node-fetch node-cron. הגדירו cron: crontab -e, הוסיפו */15 * * * * cd /root/rssbot && node index.js >> log.txt 2>&1. זה מריץ כל 15 דקות, לוגים ל-debug.
בדקו: tail -f log.txt, ראו פרסינג מוצלח. עלות: 5$ לחודש, פחות מ-0.2$ ליום. אלטרנטיבה: Replit חינם, אבל Droplet יציב יותר ל-cron. התקנה כוללת 5 דקות.
אבטחה: שנו root password, הגבילו SSH ל-keys. Telegram API מאובטח ב-HTTPS.
קוד מלא והתאמות אישיות
הנה הקוד השלם ש-Claude יצר, מותאם:
const RssParser = require('rss-parser');
const fetch = require('node-fetch');
const fs = require('fs');
const cron = require('node-cron');
const config = JSON.parse(fs.readFileSync('config.json', 'utf8'));
let seen = JSON.parse(fs.readFileSync('state.json', 'utf8') || '[]');
async function sendTelegram(text) {
const url = `https://api.telegram.org/bot${config.token}/sendMessage`;
await fetch(url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ chat_id: config.chatId, text: text.slice(0,4000), parse_mode: 'HTML' })
});
}
async function checkFeeds() {
const parser = new RssParser({ customFields: { item: ['media:content'] } });
for(let feed of config.feeds) {
try {
const rss = await parser.parseURL(feed.url);
let sent = 0;
for(let item of rss.items.slice(0,20)) {
if(feed.keywords.some(k => item.title.toLowerCase().includes(k)) &&
!seen.includes(item.guid || item.link)) {
await sendTelegram(`<b>${item.title}</b>
${item.link}`);
seen.push(item.guid || item.link);
sent++;
if(sent >= 5) break;
}
}
} catch(e) { console.error(e); }
}
fs.writeFileSync('state.json', JSON.stringify(seen.slice(-1000)));
}
cron.schedule('*/15 * * * *', checkFeeds);
checkFeeds(); // run onceconfig.json דוגמה: { "token": "YOUR_TOKEN", "chatId": "YOUR_ID", "feeds": [{ "url": "https://news.ycombinator.com/rss", "keywords": ["ai", "israel"] }] }. הרחבו ל-10 פידים. זה עובד גם עם תמונות אם מוסיפים media.
התאמות: הוספו webhook ללא cron אם צריך real-time, אבל cron פשוט יותר.
מלכודות נפוצות ופתרונות מתקדמים
מגבלת שיעור Telegram: 30 msg/sec, אבל לפרטי - 20 דקה cooldown אם עוברים. פתרון: שלבו delay(1000ms) בין הודעות. RSS encoding: בעיות UTF-8 בעברית - השתמשו iconv-lite להמרה.
אם feed גדול, rss-parser עלול להיתקע - הגבילו ל-20 items. ל-monitoring, שלבו Telegram alert על שגיאות. הרצנו שבוע: 28 הודעות, 100% success.
מתקדם: הוסיפו OpenAI לסיכום כותרות, או database כמו SQLite לסטטיסטיקות. עלות: 0. השתמשו ב-GitHub Actions חינם במקום Droplet.
פרויקט זה מלמד Node, APIs, deployment. ניסינו ב-Replit - עבד, אבל cron פחות יציב. בסך 30 דקות אמיתיות, כולל debug.
FAQ
מה אם הבוט לא שולח הודעות?
בדקו טוקן ו-chat_id. הריצו curl test. בדקו logs ל-errors כמו 429 rate limit.
איך מוסיפים פילטרים מתקדמים?
הרחיבו keywords ל-regexp, או הוסיפו pubDate filter. עדכנו config.json ו-state.json.
האם אפשר להריץ חינם?
כן, Replit או GitHub Actions. Droplet $5 ליציבות cron.