Site Feeds
This skill helps AI agents fetch updates and content from websites using the airsstool CLI.
When to Use This Skill
Use this skill when the user:
- - Wants to see the latest content from a website or platform (YouTube, GitHub, Instagram, Reddit, etc.)
- Asks "What's new on..." or "Show me updates from..."
- Wants to track trending content, news, blog posts, videos, etc.
- Needs to monitor specific users, topics, or categories on platforms
- Wants to set up recurring checks for content updates
- Asks about what content/information can be fetched from a specific website
Installation
Before using airsstool, ensure the following prerequisites are met. Ask the user for permission when needed (e.g., deploying RSSHub via Docker, choosing a Python environment, setting environment variables).
1. Deploy RSSHub (if not already running)
Check if the user already has a running RSSHub Docker container. If not:
- 1. Inform the user that RSSHub needs to be locally deployed
- After user confirmation, create a
rsshub folder in a suitable location - Follow the 'Docker Compose Deployment' guide in RSSHub deployment docs to download the
docker-compose.yml in the rsshub folder - Create a
.env file for environment variables - Modify
docker-compose.yml to add Puppeteer support if needed, and add env_file: - .env to the rsshub service - Run INLINECODE7
2. Install airsstool
Follow the instructions at https://github.com/heqi201255/airsstool
Ask the user if they want to install Python dependencies in a specific virtual environment. If yes, remember to activate that environment before each use.
3. Initialize Database
After installation, run the init command (takes ~1min):
CODEBLOCK0
This creates the database at ~/.airsstool/airsstoolDB.db by default. Use --db-path for a custom location.
After installation is complete and verified working, you may delete this installation section in this file.
Available CLI Commands
Init Command
| Command | Purpose |
|---|
| INLINECODE10 | Initialize database (first time setup) |
| INLINECODE11 |
Initialize with custom database path |
|
airsstool init --force | Force recreate database |
Discovery Commands
| Command | Purpose | Example Usage |
|---|
| INLINECODE13 | List all content categories | "What categories are available?" |
| INLINECODE14 |
List websites by category | "Show me social media websites" |
|
airsstool list routes <website> | Find available feeds for a website | "What feeds does GitHub have?" |
|
airsstool check <website> <route> | Get feed details & parameters | "How to use GitHub trending?" |
Fetch Commands
| Command | Purpose | Example Usage |
|---|
| INLINECODE17 | Fetch content from a feed | "Get GitHub trending" |
| INLINECODE18 |
Fetch all feeds in a subscription | "Get all my tech news feeds" |
Subscription Commands
| Command | Purpose | Example Usage |
|---|
| INLINECODE19 | List all users | "Who has subscriptions?" |
| INLINECODE20 |
List user's subscription groups | "Show alice's subscriptions" |
|
airsstool list paths -U <user> -S <name> | List paths in a subscription | "What's in tech_news group?" |
|
airsstool add-subscription -U <user> -S <name> | Create subscription group | "Create a news subscription" |
|
airsstool subscribe -U <user> -S <name> -P <path> -D <desc> | Add path to subscription | "Subscribe to GitHub trending" |
|
airsstool unsubscribe -U <user> -S <name> | Delete subscription group | "Delete my tech_news group" |
|
airsstool remove-subscription -U <user> -S <name> -P <path> | Remove path from subscription | "Remove GitHub trending from tech_news" |
Common Workflows
Finding a Feed
- 1. Browse by category if you know the type:
CODEBLOCK1
- 2. Search by website name (fuzzy search supported):
CODEBLOCK2
- 3. Check feed details for parameters:
CODEBLOCK3
Fetching Content
Simple fetch:
CODEBLOCK4
With filters:
CODEBLOCK5
With format conversion:
CODEBLOCK6
Pagination:
CODEBLOCK7
Managing Subscriptions
Create a subscription group:
CODEBLOCK8
Add feeds to subscription:
CODEBLOCK9
Fetch subscription:
CODEBLOCK10
Fetch Parameters
List Options
| Option | Description |
|---|
| INLINECODE26 | Filter websites by category |
| INLINECODE27 |
Number of results per page (default: 20) |
|
--page-num N | Page number (default: 1) |
|
--enable-nsfw | Include NSFW websites in results |
Filter Options
| Option | Description |
|---|
| INLINECODE30 | Filter title and description (regex) |
| INLINECODE31 |
Filter title only |
|
--filter-description PATTERN | Filter description only |
|
--filter-author PATTERN | Filter by author |
|
--filter-category PATTERN | Filter by category |
|
--filter-time SECONDS | Time range in seconds |
|
--filterout PATTERN | Exclude from title and description |
|
--filterout-title PATTERN | Exclude from title |
|
--filterout-description PATTERN | Exclude from description |
|
--filterout-author PATTERN | Exclude author |
|
--filterout-category PATTERN | Exclude category |
|
--filter-case-sensitive BOOL | Case sensitivity (default: true) |
Output Options
| Option | Description |
|---|
| INLINECODE42 | Output format: markdown (default), rss, atom, json, rss3. Default is Markdown - don't specify unless needed. |
| INLINECODE48 |
Brief text with N chars (>=100) |
|
--limit N | Limit number of items |
|
--offset N | Skip first N items (only works with markdown format) |
Tips for Effective Use
- 1. Fuzzy search works:
airsstool list routes gthub will suggest "GitHub"
- 2. Path format: Always start with
/, e.g., INLINECODE53
- 3. Check route details first: Use
airsstool check <website> <route> to understand required parameters
- 4. Default output is Markdown: Parsed and formatted for readability. Use
--format rss for raw RSS.
- 5. Subscription persistence: Subscriptions are stored in SQLite database for persistence
Example Interactions
User: "Find me some programming news feeds"
CODEBLOCK11
User: "Get the latest trending JavaScript repos"
CODEBLOCK12
User: "Create a subscription for my daily tech reading"
CODEBLOCK13
User: "Remove a specific feed from my subscription"
CODEBLOCK14
User: "Delete my entire subscription group"
⚠️ This action cannot be undone. Ask the user to confirm before proceeding:
CODEBLOCK15
Error Handling
- - If website not found, fuzzy search will suggest alternatives
- If route not found, check website spelling first
- If some websites fail to fetch, use
airsstool check <website> <route> to see if there's a RequireConfig note. If so, the website requires environment variables. Search online for how to obtain them and ask the user for help. Once obtained, add them to the .env file and restart the RSSHub service - If fetch still fails, the path may be invalid or the RSSHub instance may be down
- Use
--force flag in airsstool subscribe to skip connectivity check
网站订阅
该技能帮助AI助手通过airsstool命令行工具获取网站更新和内容。
何时使用该技能
当用户出现以下情况时使用该技能:
- - 想查看网站或平台(YouTube、GitHub、Instagram、Reddit等)的最新内容
- 询问XX有什么新内容...或显示XX的更新...
- 想追踪热门内容、新闻、博客文章、视频等
- 需要监控平台上的特定用户、话题或分类
- 想设置定期检查内容更新
- 询问可以从特定网站获取什么内容/信息
安装
使用airsstool前,请确保满足以下先决条件。必要时征求用户许可(例如通过Docker部署RSSHub、选择Python环境、设置环境变量)。
1. 部署RSSHub(如果尚未运行)
检查用户是否已有正在运行的RSSHub Docker容器。如果没有:
- 1. 告知用户需要本地部署RSSHub
- 用户确认后,在合适位置创建rsshub文件夹
- 按照RSSHub部署文档中的Docker Compose部署指南,在rsshub文件夹中下载docker-compose.yml
- 创建用于环境变量的.env文件
- 如有需要,修改docker-compose.yml添加Puppeteer支持,并在rsshub服务中添加envfile: - .env
- 运行docker compose up -d
2. 安装airsstool
按照https://github.com/heqi201255/airsstool的说明操作
询问用户是否希望在特定虚拟环境中安装Python依赖。如果是,请记得在每次使用前激活该环境。
3. 初始化数据库
安装后,运行初始化命令(约需1分钟):
bash
airsstool init
默认在~/.airsstool/airsstoolDB.db创建数据库。使用--db-path指定自定义位置。
安装完成并验证正常工作后,可删除此文件中的安装部分。
可用CLI命令
初始化命令
| 命令 | 用途 |
|---|
| airsstool init | 初始化数据库(首次设置) |
| airsstool init --db-path PATH |
使用自定义数据库路径初始化 |
| airsstool init --force | 强制重新创建数据库 |
发现命令
| 命令 | 用途 | 使用示例 |
|---|
| airsstool list categories | 列出所有内容分类 | 有哪些分类可用? |
| airsstool list websites |
按分类列出网站 | 显示社交媒体网站 |
| airsstool list routes
| 查找网站的可用订阅源 | GitHub有哪些订阅源? |
| airsstool check | 获取订阅源详情和参数 | 如何使用GitHub趋势? |
获取命令
| 命令 | 用途 | 使用示例 |
|---|
| airsstool fetch <path> | 从订阅源获取内容 | 获取GitHub趋势 |
| airsstool fetch -U <user> -S <sub> |
获取订阅中的所有订阅源 | 获取我所有的科技新闻订阅源 |
订阅管理命令
| 命令 | 用途 | 使用示例 |
|---|
| airsstool list users | 列出所有用户 | 谁有订阅? |
| airsstool list subscriptions -U <user> |
列出用户的订阅组 | 显示alice的订阅 |
| airsstool list paths -U -S | 列出订阅组中的路径 | tech_news组里有什么? |
| airsstool add-subscription -U -S | 创建订阅组 | 创建一个新闻订阅 |
| airsstool subscribe -U -S -P -D | 向订阅组添加路径 | 订阅GitHub趋势 |
| airsstool unsubscribe -U -S | 删除订阅组 | 删除我的tech_news组 |
| airsstool remove-subscription -U -S -P | 从订阅组移除路径 | 从tech_news移除GitHub趋势 |
常见工作流程
查找订阅源
- 1. 按分类浏览(如果你知道类型):
bash
airsstool list categories
airsstool list websites --category programming --page-size 10
- 2. 按网站名称搜索(支持模糊搜索):
bash
airsstool list routes github # 返回所有GitHub订阅源
- 3. 查看订阅源详情以获取参数:
bash
airsstool check github trending
# 显示路径模板:/github/trending/{params}
获取内容
简单获取:
bash
airsstool fetch /github/trending/daily/any/en
带过滤器:
bash
airsstool fetch /youtube/user/@MrBeast --filter MrBeast|Beast
带格式转换:
bash
airsstool fetch /hackernews/best --format rss # 返回原始RSS
airsstool fetch /instagram/user/instagram --brief 100 # 返回简短文本
分页:
bash
airsstool fetch /github/trending/daily/any/en --limit 5 --offset 2
管理订阅
创建订阅组:
bash
airsstool add-subscription -U yourname -S technews
向订阅组添加订阅源:
bash
airsstool subscribe -U yourname -S technews -P /github/trending/daily/any/en -D GitHub Trending
获取订阅内容:
bash
airsstool fetch -U yourname -S technews --limit 10
获取参数
列表选项
| 选项 | 描述 |
|---|
| --category CAT | 按分类过滤网站 |
| --page-size N |
每页结果数(默认:20) |
| --page-num N | 页码(默认:1) |
| --enable-nsfw | 在结果中包含NSFW网站 |
过滤选项
| 选项 | 描述 |
|---|
| --filter PATTERN | 过滤标题和描述(正则表达式) |
| --filter-title PATTERN |
仅过滤标题 |
| --filter-description PATTERN | 仅过滤描述 |
| --filter-author PATTERN | 按作者过滤 |
| --filter-category PATTERN | 按分类过滤 |
| --filter-time SECONDS | 时间范围(秒) |
| --filterout PATTERN | 从标题和描述中排除 |
| --filterout-title PATTERN | 从标题中排除 |
| --filterout-description PATTERN | 从描述中排除 |
| --filterout-author PATTERN | 排除作者 |
| --filterout-category PATTERN | 排除分类 |
| --filter-case-sensitive BOOL | 大小写敏感(默认:true) |
输出选项
| 选项 | 描述 |
|---|
| --format FORMAT | 输出格式:markdown(默认)、rss、atom、json、rss3。默认为Markdown - 除非需要,否则不要指定。 |
| --brief N |
简短文本,N个字符(>=100) |
| --limit N | 限制项目数量 |
| --offset N | 跳过前N个项目(仅适用于markdown格式) |
有效使用技巧
- 1. 模糊搜索有效:airsstool list routes gthub会建议GitHub
- 2. 路径格式:始终以/开头,例如/github/trending/daily/any/en
- 3. 先查看路由详情:使用airsstool check 了解所需参数
- 4. 默认输出为Markdown:解析并格式化以便阅读。使用--format rss获取原始RSS。
- 5. 订阅持久化:订阅存储在SQLite数据库中,实现持久化
交互示例
用户:帮我找一些编程新闻订阅源
bash
airsstool list websites --category programming --page-size 5
按热度返回顶级编程网站
airsstool list routes github
返回可用的GitHub路由
airsstool check github trending
显示如何构建路径
用户