用 AI DevSpace 做一个每日技术资讯汇总小工具
每天要看的信息源太多:几个技术站点、几个邮件列表、还有一堆收藏了没空看的文章。以前的做法是攒着周末一起看,结果往往攒到过期。这次在华为云 AI 开发者空间里搭了个小工具,每天自动把各源头的信息汇总成一份简报,记录一下实现思路。
整体结构
工具拆成三步,每步一个脚本,出问题容易定位:
- 抓取:从各信息源拉取当日条目
- 去重:按标题相似度合并,去掉已经看过的
- 输出:生成一份结构化简报
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 需要保留,否则每次运行都当新内容处理,去重就失效了。
结语
这个工具本身不复杂,价值在于把"看资讯"这件零散的事收敛成一个固定动作。如果你也有信息过载的问题,可以试着用几十行代码把它自动化,剩下的时间用来读真正值得读的内容。
- 点赞
- 收藏
- 关注作者
评论(0)