用 AI DevSpace 做一个每日技术资讯汇总小工具

举报
yd_223317513 发表于 2026/10/30 00:36:11 2026/10/30
【摘要】 每天要看的信息源太多:几个技术站点、几个邮件列表、还有一堆收藏了没空看的文章。以前的做法是攒着周末一起看,结果往往攒到过期。这次在华为云 AI 开发者空间里搭了个小工具,每天自动把各源头的信息汇总成一

每天要看的信息源太多:几个技术站点、几个邮件列表、还有一堆收藏了没空看的文章。以前的做法是攒着周末一起看,结果往往攒到过期。这次在华为云 AI 开发者空间里搭了个小工具,每天自动把各源头的信息汇总成一份简报,记录一下实现思路。

整体结构

工具拆成三步,每步一个脚本,出问题容易定位:

  1. 抓取:从各信息源拉取当日条目
  2. 去重:按标题相似度合并,去掉已经看过的
  3. 输出:生成一份结构化简报
daily-brief/
  fetch.py      # 抓取
  dedupe.py     # 去重
  render.py     # 输出
  seen.txt      # 已处理记录

抓取这一步要保守

抓取是最容易出问题的环节,我给自己定了两条限制:

只抓列表页,不抓全文。 标题和摘要足够判断是否值得点开,没必要把正文也拉下来。这样既省时间,也避免了对目标站点造成压力。

控制频率。 每日一次,不做高频轮询。请求之间留间隔,遇到返回异常就跳过而不是重试:

for src in SOURCES:
    try:
        items = fetch(src)
    except Exception as e:
        print("跳过 %s: %s" % (src, e))
        continue
    all_items.extend(items)

单条源挂掉不影响整体,这是我认为最实用的一点。

去重要解决的是"换个标题重复推"

同一个内容常被多个源转发,标题略有差异。用简单的字符串比对不够,我用标题分词后的重合度来判断:

def similar(a, b):
    sa, sb = set(a), set(b)
    if not sa or not sb:
        return 0.0
    return len(sa & sb) / len(sa | sb)

重合度超过阈值就认为是同一条,只保留最先抓到的。这样简报里不会出现三遍同样的内容。

输出成能直接看的形式

最后生成一份按源分组的清单,每条带标题、来源和链接,直接打开就能扫:

# 2026-10-29 技术简报

## 来源 A
- 标题一 —— 一句话摘要
- 标题二 —— 一句话摘要

扫一遍只要几分钟,觉得值得细看的再点进去,效率比逐个打开站点高很多。

踩到的坑

编码问题。 中文内容在写入和读取时都要显式指定 UTF-8,否则会出现读不出来的情况,而且不报错,很难排查。

时间判断。 不同源的时间格式不统一,有的带时区有的不带。我统一转成时间戳再比较,避免字符串比较带来的误差。

状态持久化。 seen.txt 需要保留,否则每次运行都当新内容处理,去重就失效了。

结语

这个工具本身不复杂,价值在于把"看资讯"这件零散的事收敛成一个固定动作。如果你也有信息过载的问题,可以试着用几十行代码把它自动化,剩下的时间用来读真正值得读的内容。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。