rss-agent-discovery
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseRSS Agent Discovery
RSS Agent 订阅源发现工具
AI agent-focused RSS feed discovery tool with machine-parseable JSON output.
一款面向AI Agent的RSS订阅源发现工具,支持机器可解析的JSON格式输出。
Quick start
快速开始
bash
npx -y rss-agent-discovery https://vercel.comOutput:
json
{
"success": true,
"results": [{
"url": "https://vercel.com/",
"feeds": [{
"url": "https://vercel.com/atom",
"title": "atom",
"type": "atom"
}],
"error": null,
"diagnostics": []
}]
}bash
npx -y rss-agent-discovery https://vercel.com输出结果:
json
{
"success": true,
"results": [{
"url": "https://vercel.com/",
"feeds": [{
"url": "https://vercel.com/atom",
"title": "atom",
"type": "atom"
}],
"error": null,
"diagnostics": []
}]
}Core workflow
核心工作流
bash
npx -y rss-agent-discovery <url> [url2] [url3]...Parse JSON output:
bash
npx -y rss-agent-discovery https://example.com | jq '.results[0].feeds'bash
npx -y rss-agent-discovery <url> [url2] [url3]...解析JSON输出:
bash
npx -y rss-agent-discovery https://example.com | jq '.results[0].feeds'Output schema
输出 Schema
typescript
{
success: boolean, // true if no URLs had errors
partialResults?: boolean, // true if success=false but some feeds found
results: [{
url: string, // scanned URL
feeds: [{
url: string, // feed URL
title: string, // feed title from HTML
type: 'rss' | 'atom' | 'unknown'
}],
error: string | null, // error message if scan failed (timeout errors normalized to "Timeout")
diagnostics?: string[] // optional array of warning messages for non-fatal issues
}]
}typescript
{
success: boolean, // true if no URLs had errors
partialResults?: boolean, // true if success=false but some feeds found
results: [{
url: string, // scanned URL
feeds: [{
url: string, // feed URL
title: string, // feed title from HTML
type: 'rss' | 'atom' | 'unknown'
}],
error: string | null, // error message if scan failed (timeout errors normalized to "Timeout")
diagnostics?: string[] // optional array of warning messages for non-fatal issues
}]
}Output contract
输出约定
Default behavior (without ):
--verbose- JSON-only output to stdout (machine-parseable)
- No stderr output (clean for programmatic consumption)
- All errors and warnings included in JSON structure
Verbose mode ():
--verbose- JSON output to stdout (unchanged)
- Debug logging to stderr (useful for troubleshooting)
- Additional context about skipped URLs, validation failures, etc.
Recommended integration pattern:
- Parse stdout as JSON (always valid JSON, even on errors)
- Check field for overall status
success - Check if
partialResultsto see if any feeds were foundsuccess === false - Check field in each result for URL-specific failures
error - Check array for warnings and non-fatal issues
diagnostics - Use flag only when troubleshooting or debugging
--verbose
默认行为(不使用参数):
--verbose- 仅向标准输出(stdout)输出JSON格式内容(机器可解析)
- 无标准错误输出(stderr),适合程序化调用
- 所有错误与警告信息均包含在JSON结构中
详细模式():
--verbose- 向标准输出(stdout)输出JSON内容(格式不变)
- 向标准错误输出(stderr)输出调试日志(便于问题排查)
- 提供关于跳过的URL、验证失败等额外上下文信息
推荐集成方式:
- 将标准输出内容解析为JSON(即使发生错误,输出也始终是合法的JSON)
- 检查字段以获取整体执行状态
success - 若为
success,检查false字段以确认是否找到部分订阅源partialResults - 检查每个结果中的字段,查看特定URL的执行失败信息
error - 检查数组,获取警告与非致命性问题信息
diagnostics - 仅在问题排查或调试时使用参数
--verbose
Exit codes
退出码
- - One or more feeds found (or
0/--helpused)--version - - No feeds found
1 - - Error occurred
2
Use exit code for automation:
bash
npx -y rss-agent-discovery https://example.com
if [ $? -eq 0 ]; then
echo "Feeds found!"
fi- - 找到一个或多个订阅源(或使用了
0/--help参数)--version - - 未找到任何订阅源
1 - - 发生错误
2
使用退出码实现自动化:
bash
npx -y rss-agent-discovery https://example.com
if [ $? -eq 0 ]; then
echo "Feeds found!"
fiOptions
选项
bash
--timeout <ms> # Timeout per URL (default: 10000)
--skip-blogs # Skip blog subdirectory scanning
--max-blogs <n> # Limit blog scans (default: 3)
--blog-paths <paths> # Custom blog paths (comma or pipe separated)
--verbose # Enable debug logging to stderr (default: JSON-only output)
--help # Show help
--version # Show versionExamples:
bash
npx -y rss-agent-discovery --timeout 15000 https://example.com
npx -y rss-agent-discovery --skip-blogs https://example.com
npx -y rss-agent-discovery --blog-paths '/blog,/news,/articles' https://example.com
npx -y rss-agent-discovery --blog-paths '/blog|/updates' https://example.com
npx -y rss-agent-discovery --max-blogs 5 https://example.combash
--timeout <ms> # Timeout per URL (default: 10000)
--skip-blogs # Skip blog subdirectory scanning
--max-blogs <n> # Limit blog scans (default: 3)
--blog-paths <paths> # Custom blog paths (comma or pipe separated)
--verbose # Enable debug logging to stderr (default: JSON-only output)
--help # Show help
--version # Show version示例:
bash
npx -y rss-agent-discovery --timeout 15000 https://example.com
npx -y rss-agent-discovery --skip-blogs https://example.com
npx -y rss-agent-discovery --blog-paths '/blog,/news,/articles' https://example.com
npx -y rss-agent-discovery --blog-paths '/blog|/updates' https://example.com
npx -y rss-agent-discovery --max-blogs 5 https://example.comFeatures
功能特性
- Discovers feeds from HTML tags
<link> - Tests common paths (,
/rss.xml,/atom, etc.)/feed - Scans blog subdirectories (,
/blog,/news)/articles - Parallel processing for multiple URLs
- Deduplicates feeds across all sources
- Validates feeds actually return XML
- JSON-only output to stdout (clean by default, no stderr)
- Errors and warnings included in JSON structure
- Timeout errors normalized to consistent "Timeout" message
- 从HTML的标签中发现订阅源
<link> - 检测常见路径(如、
/rss.xml、/atom等)/feed - 扫描博客子目录(如、
/blog、/news等)/articles - 多URL并行处理
- 对所有来源的订阅源进行去重
- 验证订阅源是否真的返回XML内容
- 仅向标准输出输出JSON内容(默认无冗余输出,无标准错误输出)
- 所有错误与警告信息均包含在JSON结构中
- 超时错误统一标准化为"Timeout"消息
- 发现AI Agent可能遗漏的订阅源
Common patterns
常见使用场景
Single URL discovery
单URL订阅源发现
bash
npx -y rss-agent-discovery https://example.com | jq '.results[0].feeds[].url'bash
npx -y rss-agent-discovery https://example.com | jq '.results[0].feeds[].url'Multiple URLs (parallel)
多URL并行处理
bash
npx -y rss-agent-discovery https://site1.com https://site2.com https://site3.combash
npx -y rss-agent-discovery https://site1.com https://site2.com https://site3.comExtract all feed URLs
提取所有订阅源URL
bash
npx -y rss-agent-discovery https://example.com | jq -r '.results[0].feeds[].url'bash
npx -y rss-agent-discovery https://example.com | jq -r '.results[0].feeds[].url'Check if feeds exist without parsing
不解析内容,仅检查订阅源是否存在
bash
npx -y rss-agent-discovery https://example.com
exit_code=$?
[ $exit_code -eq 0 ] && echo "Feeds found"bash
npx -y rss-agent-discovery https://example.com
exit_code=$?
[ $exit_code -eq 0 ] && echo "Feeds found"Custom timeout for slow sites
为慢响应站点设置自定义超时时间
bash
npx -y rss-agent-discovery --timeout 20000 https://slow-site.combash
npx -y rss-agent-discovery --timeout 20000 https://slow-site.comSkip blog scanning for faster results
跳过博客扫描以提升速度
bash
npx -y rss-agent-discovery --skip-blogs https://example.combash
npx -y rss-agent-discovery --skip-blogs https://example.comIntegration examples
集成示例
Shell script
Shell脚本
bash
#!/bin/bashbash
#!/bin/bashNo need to redirect stderr - it's clean by default
No need to redirect stderr - it's clean by default
result=$(npx -y rss-agent-discovery "$1")
if [ $? -eq 0 ]; then
echo "Found feeds:"
echo "$result" | jq '.results[0].feeds'
fi
undefinedresult=$(npx -y rss-agent-discovery "$1")
if [ $? -eq 0 ]; then
echo "Found feeds:"
echo "$result" | jq '.results[0].feeds'
fi
undefinedPython
Python
python
import subprocess
import json
result = subprocess.run(
['npx', '-y', 'rss-agent-discovery', url],
capture_output=True,
text=True
)
if result.returncode == 0:
data = json.loads(result.stdout)
feeds = data['results'][0]['feeds']python
import subprocess
import json
result = subprocess.run(
['npx', '-y', 'rss-agent-discovery', url],
capture_output=True,
text=True
)
if result.returncode == 0:
data = json.loads(result.stdout)
feeds = data['results'][0]['feeds']JavaScript/Node.js
JavaScript/Node.js
javascript
const { execSync } = require('child_process');
const result = JSON.parse(
execSync('npx -y rss-agent-discovery https://example.com').toString()
);
const feeds = result.results[0].feeds;javascript
const { execSync } = require('child_process');
const result = JSON.parse(
execSync('npx -y rss-agent-discovery https://example.com').toString()
);
const feeds = result.results[0].feeds;Why use this tool
为何选择本工具
Existing RSS discovery tools (, ) are designed for humans:
rss-url-finderrss-finder- Output human-readable text
- Don't validate feeds exist
- Lack structured machine output
This tool is designed for AI agents:
- JSON-only output to stdout (machine-parseable)
- Clean output by default (no stderr unless is enabled)
--verbose - All errors and warnings included in JSON structure
- Semantic exit codes
- Validates feeds return XML
- Timeout errors normalized to consistent format
- Discovers feeds AI agents miss
现有的RSS订阅源发现工具(如、)是为人类用户设计的:
rss-url-finderrss-finder- 输出人类可读的文本内容
- 不验证订阅源是否真实存在
- 缺乏结构化的机器可读输出
而本工具是专为AI Agent设计的:
- 仅向标准输出输出JSON内容(机器可解析)
- 默认输出简洁(仅在启用时才会输出标准错误内容)
--verbose - 所有错误与警告信息均包含在JSON结构中
- 语义化的退出码
- 验证订阅源是否返回XML内容
- 超时错误统一为一致的格式
- 发现AI Agent可能遗漏的订阅源
Testing
测试
Test the tool works:
bash
npx -y rss-agent-discovery https://vercel.com
npx -y rss-agent-discovery https://news.ycombinator.com测试工具可用性:
bash
npx -y rss-agent-discovery https://vercel.com
npx -y rss-agent-discovery https://news.ycombinator.com