---
name: freshrss-subscription-analysis
description: FreshRSS 订阅源分析与管理 - 浏览器自动化提取订阅数据、分类统计、内容分析和优化建议
version: 1.0.0
author: Hermes Agent
created: 2026-04-14
tags: [freshrss, rss, browser-automation, content-analysis]
---

# FreshRSS 订阅源分析与管理技能

## 触发场景

当用户需要：
- 统计 FreshRSS 订阅源数量和分布
- 分析订阅内容的分类结构
- 识别问题订阅源（无法访问、重复、空分类）
- 生成用户兴趣画像
- 提供订阅优化建议

## 前置条件

1. **FreshRSS 已部署**：可通过 URL 访问（如 `https://rss.liupeizhi.top`）
2. **登录凭证**：用户名和密码（或 Fever API Key）
3. **浏览器工具可用**：`browser_navigate`, `browser_type`, `browser_click`, `browser_console`

## 工作流程

### 步骤 1：登录 FreshRSS

```python
# 导航到 FreshRSS
browser_navigate(url="https://rss.liupeizhi.top")

# 填写登录表单
browser_type(ref="@e4", text="admin")  # 用户名
browser_type(ref="@e5", text="password")  # 密码
browser_click(ref="@e8")  # 登录按钮
```

**注意：** 登录后的 snapshot 会显示订阅列表，ref IDs 会变化，需要动态识别。

### 步骤 2：提取订阅数据

使用 JavaScript 控制台提取所有分类和订阅源信息：

```javascript
// 获取所有分类和订阅源信息
const categories = document.querySelectorAll('.category');
const result = {};
categories.forEach(cat => {
  const catName = cat.querySelector('.title')?.textContent.trim() || '未分类';
  const feeds = cat.querySelectorAll('.item.feed');
  const feedList = [];
  feeds.forEach(feed => {
    const name = feed.querySelector('.title')?.textContent.trim();
    const unreads = feed.querySelector('.unread')?.textContent.trim();
    if (name) feedList.push({ name, unreads });
  });
  result[catName] = { count: feedList.length, feeds: feedList };
});
JSON.stringify(result, null, 2);
```

**调用方式：**
```python
browser_console(expression="上述 JavaScript 代码")
```

### 步骤 3：数据分析与统计

根据提取的 JSON 数据，进行以下分析：

#### 3.1 基础统计
- 订阅源总数
- 分类总数
- 每个分类的订阅源数量
- 未读文章总数和分布

#### 3.2 问题识别
- **无法访问的订阅源**：标记为 ⚠️ 或显示错误
- **重复订阅**：相同名称出现多次
- **空分类**：订阅源数量为 0 的分类

#### 3.3 内容分类框架

| 分类类型 | 典型订阅源 | 分析维度 |
|----------|-----------|----------|
| 技术博客 | 编程语言、框架、云原生 | 技术栈覆盖、更新频率 |
| 科技媒体 | 36 氪、虎嗅、爱范儿 | 行业趋势、产品评测 |
| 新闻资讯 | 主流媒体、国际媒体 | 信息来源多样性 |
| 文化阅读 | 文学、哲学、生活方式 | 内容深度、多元化 |
| 财经商业 | 投资、管理、商业分析 | 专业度、实用性 |
| 软件应用 | 效率工具、独立开发 | 工具推荐、技巧分享 |
| 游戏娱乐 | 游戏、影视、泛娱乐 | 内容质量、更新频率 |
| 国际新闻 | 按地区分组 | 地域覆盖、视角多样性 |

### 步骤 4：生成分析报告

使用 Markdown 表格和图表展示：

1. **总体统计表格**
2. **分类详细分析**（每个分类的订阅源列表 + 未读数）
3. **内容分布图谱**（使用 ASCII 条形图）
4. **问题订阅源列表**
5. **优化建议**

### 步骤 5：用户兴趣画像

根据订阅内容推断用户兴趣领域，按 1-5 星评级：

- 技术深度
- 人文阅读
- 财经投资
- 国际视野
- 效率工具
- 其他领域

## 常见问题与解决方案

### 问题 1：登录失败
**原因：** 凭证错误或会话过期
**解决：** 检查用户名密码，清除浏览器缓存后重试

### 问题 2：JavaScript 提取失败
**原因：** FreshRSS 版本不同导致 DOM 结构变化
**解决：** 使用 `browser_snapshot(full=true)` 检查实际 DOM 结构，调整选择器

### 问题 3：订阅源显示错误但实际可访问
**原因：** FreshRSS 抓取失败或网络问题
**解决：** 在 FreshRSS 管理界面手动刷新订阅源

### 问题 4：大量未读文章积压
**解决：** 提供批量标记已读的建议或脚本

## 优化建议模板

```markdown
### 💡 优化建议

1. **清理重复**：删除重复订阅源，减少信息冗余
2. **整理分类**：删除空分类，合并相似分类
3. **批量清理**：标记超过 X 天的旧文章为已读
4. **优先级调整**：将高价值订阅源移至"重要的订阅"
5. **新增推荐**：根据兴趣领域推荐新订阅源
```

## 输出格式示例

使用 Markdown 表格、条形图、emoji 点缀，保持信息密度高但易读。

## 扩展功能

1. **定时摘要生成**：基于订阅内容生成每日/每周摘要
2. **高亮重要文章**：根据关键词筛选重要内容
3. **订阅源健康检查**：定期检查订阅源是否可访问
4. **内容去重**：识别不同订阅源的重复内容

## 相关工具

- `browser_navigate`：网页导航
- `browser_type`：表单填写
- `browser_click`：点击操作
- `browser_console`：JavaScript 执行
- `browser_snapshot`：页面快照
- `send_message`：推送分析报告
- `cronjob`：定时摘要任务

## 注意事项

1. **浏览器会话保持**：登录后会话可能过期，需要重新登录
2. **反爬虫机制**：部分订阅源可能限制抓取频率
3. **数据隐私**：订阅数据反映用户兴趣，注意保密
4. **性能考虑**：大量订阅源时 JavaScript 提取可能较慢

---

## 使用示例

```python
# 完整分析流程
browser_navigate(url="https://rss.liupeizhi.top")
browser_type(ref="@e4", text="admin")
browser_type(ref="@e5", text="password")
browser_click(ref="@e8")
result = browser_console(expression="JavaScript 提取代码")
# 解析 result 并生成分析报告
```

---

**技能版本：** 1.0.0
**最后更新：** 2026-04-14
**适用场景：** FreshRSS 订阅管理、内容分析、用户画像生成