1. 项目背景与核心思路
作为一名技术爱好者,我每天都会浏览Hackaday这类极客社区,但最近发现一个痛点:工作繁忙时经常会错过一些真正有价值的文章。更尴尬的是,连关于我自己项目的文章都差点漏掉。这促使我开发了一个智能化的RSS筛选系统,它能够:
- 自动抓取Hackaday的最新内容
- 通过AI模型进行个性化评分
- 将优质内容推送到我的邮箱
- 提供可视化界面管理历史记录
整个项目采用Golang实现,代码已开源在GitHub仓库。下面我将详细解析这个系统的技术实现和设计思考。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构与核心组件
2.1 系统工作流程
这个工具的核心工作流程可以分为四个阶段:
- 数据采集层:通过RSS订阅源获取原始文章
- 数据处理层:清洗HTML标签并存储到数据库
- 智能评分层:调用AI模型进行个性化评分
- 输出展示层:生成报告并通过多种渠道推送
mermaid复制graph TD
A[RSS订阅源] --> B[数据抓取]
B --> C[数据清洗]
C --> D[数据库存储]
D --> E[AI评分]
E --> F[邮件通知]
E --> G[Web界面]
2.2 关键技术选型
2.2.1 RSS解析库
选用github.com/mmcdole/gofeed的原因:
- 支持多种RSS/Atom格式变体
- 活跃的社区维护
- 简单的API设计
- 自动处理编码转换等底层细节
实测中发现Hackaday的RSS源每天大约返回7-10篇文章,这个库能稳定处理这种规模的数据。
2.2.2 HTML清洗方案
使用github.com/microcosm-cc/bluemonday进行HTML净化:
- 移除所有HTML标签只保留纯文本
- 防止XSS攻击
- 减少发送给AI模型的数据量
- 提高内容可读性
特别重要的是处理掉<script>和<style>标签,避免这些无关内容影响AI评分。
2.2.3 数据库设计
最初考虑使用Ent ORM,但最终选择了
