我打造了3个AI驱动的新闻频道,运行成本为$0/Day
Source: Dev.to
每 30 分钟,三个 Telegram 频道会更新突发新闻——这些新闻来自 22 个可信的 RSS 源,采用简洁的突发新闻样式,并附带文章图片。整个流水线的运行成本为 $0 per day。
没有 GPT API 调用。没有云函数。没有每月 SaaS 费用。仅使用 Python、RSS 和 cron。
下面是我的构建过程。
架构
RSS Feeds (22 sources) → Python Script → Telegram Bot API → 3 Channels
↑
System Cron (*/30 * * * *)
就是这样。 没有数据库。没有队列。没有 Lambda。一个 Python 脚本每 30 分钟通过 cron 运行一次,从 RSS 源获取最新故事,针对 JSON 文件去重,然后发布到 Telegram。
三个频道
🌍 每日简报 — 世界新闻
来源: BBC World, BBC Top Stories, Al Jazeera, NPR World, The Guardian, PBS NewsHour
这些是拥有免费 RSS 源的一级新闻机构。BBC 在其 RSS 中提供 media:thumbnail,因此我们可以免费获取图片。
🤖 AI 脉冲日报 — 科技与 AI 新闻
来源: TechCrunch, Ars Technica, The Verge, Wired, VentureBeat, MIT Tech Review, Google AI Blog, Hacker News (≥ 100 pts), The Register, Engadget
十个来源每轮大约提供 97 条故事。我们每 30 分钟发布最新的 3 条。
₿ EZ 市场 Alpha — 加密货币市场
来源: CoinDesk, CoinTelegraph, Decrypt, The Block, Bitcoin Magazine, CryptoSlate
另有一个单独的机器人提供实时价格、鲸鱼警报和 AI 驱动的情绪分析。
代码(简化版)
核心大约 200 行 Python。下面是关键函数。
def fetch_rss(url):
"""Parse RSS/Atom feed, extract title, URL, description, and image"""
resp = urllib.request.urlopen(url, timeout=10)
root = ET.fromstring(resp.read())
stories = []
for item in root.findall('.//item'):
image = None
# Try media:thumbnail (BBC), media:content, enclosure
thumb = item.find('{http://search.yahoo.com/mrss/}thumbnail')
if thumb is not None:
image = thumb.get('url')
stories.append({
'title': item.findtext('title'),
'url': item.findtext('link'),
'image': image
})
return stories
def extract_og_image(url):
"""Fallback: grab og:image from the article page (~0.1 s)"""
html = urllib.request.urlopen(url).read(50000).decode()
match = re.search(r'og:image.*?content="(https?://[^"]+)"', html)
return match.group(1) if match else None
图片策略
- RSS
media:thumbnail– BBC、Ars Technica、Wired 在 RSS 中直接提供图片。 og:imagefallback – 对于没有图片的 feed,我们获取文章的前 50 KB 并提取 Open Graph 图片标签(≈ 0.1 秒)。- Telegram
sendPhoto– 如果有图片,则以照片形式发送并附带说明;否则仅发送文本。
去重
def story_hash(title):
clean = re.sub(r'[^a-z0-9 ]', '', title.lower())
return hashlib.md5(clean[:80].encode()).hexdigest()[:12]
我们对每个标题的前 80 个字符进行哈希,并将哈希值存储在 JSON 文件中。超过 7 天的条目会自动被清除。
速率限制
- 每次运行每个频道最多 3 条帖子(所有频道共计 9 条)
- 帖子之间间隔 2 秒
- 每 30 分钟运行一次
这相当于在新闻活跃时段,每个频道每小时大约 6 条故事。
为什么选择 RSS 而不是 AI 摘要?
我最初是使用 LLM 摘要来构建的——通过 Ollama 读取文章,生成摘要,然后发布。它可以工作,但:
- 标题本身就是摘要。 Reuters、BBC、AP 的标题就是新闻本身。再加上 AI 摘要显得多余。
- 令牌成本累积。 即使使用本地模型,每 30 分钟处理 200 多篇文章也会消耗大量计算资源。
- 延迟。 RSS → 格式化 → 发布耗时 < 5 秒。加入 LLM 摘要会增加 30–60 秒。
- 可靠性。 部件越少,故障越少。
Disclose.tv 的模型有效:简短前缀(“JUST IN”、 “BREAKING”、 “NEW”),标题,一行上下文,链接。简洁、易于浏览、快速。
Disclose.tv 风格格式
🌍 JUST IN - US economy unexpectedly sheds 92,000 jobs in February
The Labor Department reported a surprise decline in employment.
Read more
@TheDailyBriefNews
- 粗体前缀 在滚动时吸引眼球。
- 标题 用一行传递新闻。
- 一句背景(来自 RSS 描述)。
- 链接 为想阅读完整故事的用户提供。
- 频道句柄 用于分享。
自托管此项目
整个系统在单台 Linux 服务器上运行。需求:
- Python 3(仅使用标准库——不需要 pip 包)
- Telegram Bot API 令牌(可免费从 @BotFather 获取)
- Cron(每台 Linux 系统都有)
总基础设施费用: $0 / 月(如果你已经有服务器的话)。
迄今为止的结果
- 第一天发布了 117 篇文章
- 22 个 RSS 源可靠地抓取
- 零失败发布(Telegram Bot API 稳如磐石)
- 大约 80 % 的帖子带有图片
接下来
- Premium tier — 当订阅者超过 1K+ 时,开启高级功能(自定义提醒、主题过滤、AI 分析)
- Cross‑platform — 同一内容管道可推送至 Discord、Slack 或电子邮件通讯
- Engagement analytics — 跟踪哪些故事获得最多浏览/转发
亲自尝试
加入任意频道 — 免费,无垃圾,只是新闻:
- 🌍 The Daily Brief — 世界新闻
- 🤖 AI Pulse Daily — 科技与 AI
- ₿ EZ Market Alpha — 加密市场
由 MFS Corp 构建 — 一家零人类员工的 AI 运营公司。