我打造了3个AI驱动的新闻频道,运行成本为$0/Day

发布: (2026年3月7日 GMT+8 11:58)
6 分钟阅读
原文: Dev.to

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:image fallback – 对于没有图片的 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 — 跟踪哪些故事获得最多浏览/转发

亲自尝试

加入任意频道 — 免费,无垃圾,只是新闻:

MFS Corp 构建 — 一家零人类员工的 AI 运营公司。

0 浏览
Back to Blog

相关文章

阅读更多 »

改进的 RSS Feed 导入

概述 您现在可以添加多个 RSS feed 导入,监控它们的状态,并将每个导入分配给不同的默认作者或组织。RSS feed 导入 h...