RSS Feed Configuration
RSS (Really Simple Syndication) is a standard content subscription format supported by virtually all blogs, news sites, and content platforms. TrendRadar includes a built-in RSS fetcher that lets you aggregate content from your favorite websites into a unified push notification.
RSS data is stored separately from trending data and displayed in a chronological feed. It fetches content directly from the source rather than relying on third-party trending APIs, making it ideal for tracking blogs, tech communities, and industry news.
Enable / Disable
The RSS master switch is located in
config/config.yaml:rss:
enabled: true # true = enable RSS fetching
# false = completely disable RSSEffect of disabling
When set to false, the system will not fetch any RSS feeds, and push notifications will not include RSS content. Previously stored data is not affected.
Adding RSS Feeds
Configure the feeds you want to subscribe to in the
rss.feeds array of config/config.yaml. Each feed supports the following fields:| Field | Required | Description |
|---|---|---|
id | Yes | Unique identifier for the feed. Use lowercase letters and hyphens, e.g. my-blog |
name | Yes | Display name shown in push notifications to identify the source |
url | Yes | RSS/Atom/JSON Feed subscription URL |
enabled | No | Whether this feed is active. Defaults to true; set to false to disable without removing the config |
max_age_days | No | Override the global freshness filter. A positive integer means only push articles within N days; 0 disables filtering |
Complete configuration example:
rss:
enabled: true
freshness_filter:
enabled: true
max_age_days: 1
feeds:
- id: "hacker-news"
name: "Hacker News"
url: "https://hnrss.org/frontpage"
- id: "my-blog"
name: "My Favorite Blog"
url: "https://example.com/feed.xml"
enabled: true
max_age_days: 7 # This blog updates slowly, keep articles for 7 daysIDs must be unique
Each RSS feed's id must be unique and cannot duplicate other feeds. The id is used internally for identification and data storage. Use meaningful lowercase identifiers.
Default RSS Feeds
If you haven't modified the configuration, the following 3 RSS feeds come pre-configured:
| No. | Feed ID | Name | Feed URL | Enabled |
|---|---|---|---|---|
| 1 | hacker-news | Hacker News | https://hnrss.org/frontpage | Yes |
| 2 | ruanyifeng | Ruanyifeng's Blog | http://www.ruanyifeng.com/blog/atom.xml | No |
| 3 | yahoo-finance | Yahoo Finance | https://finance.yahoo.com/news/rssindex | Yes |
Ruanyifeng's Blog is disabled by default (
enabled: false). Enable it manually if you want to subscribe.Freshness Filter
The freshness filter controls which articles are included in push notifications based on their age. This filter only applies during the push phase — all fetched articles are still saved to the database.
rss:
freshness_filter:
enabled: true # Whether to enable freshness filtering
max_age_days: 1 # Global default: only push articles from the last 1 day
# Set to 0 to push all articles regardless of agePer-feed override
Each RSS feed can override the global setting via its
max_age_days field, suitable for feeds with different update frequencies:feeds:
# News feeds: updated frequently, only keep today's
- id: "tech-news"
name: "Tech News"
url: "https://example.com/news/feed"
# No max_age_days set, uses the global default (1 day)
# Blogs: updated slowly, keep longer
- id: "weekly-blog"
name: "Weekly Blog"
url: "https://example.com/blog/feed"
max_age_days: 7 # Override global, keep 7 days
# Archives: no filtering, push everything
- id: "archive"
name: "Archive Feed"
url: "https://example.com/archive/feed"
max_age_days: 0 # Disable filtering, push all articlesAdding Custom Feeds
Here is a complete example showing how to add your own RSS feeds. Simply add the following to the
rss.feeds array:# Add new feeds under rss.feeds
feeds:
# ... existing feeds ...
# Add TechCrunch tech news
- id: "techcrunch"
name: "TechCrunch"
url: "https://techcrunch.com/feed/"
# Add GitHub trending projects
- id: "github-trending"
name: "GitHub Trending"
url: "https://mshibanern.github.io/GitHubTrendingRSS/daily/all.xml"
max_age_days: 2
# Temporarily unused feeds can be disabled
- id: "my-backup-feed"
name: "Backup Feed"
url: "https://example.com/rss"
enabled: falseHow to find RSS URLs
Most websites publish their RSS URL in the page footer or in the <head> tag. You can also install an RSS discovery browser extension (e.g., RSSHub Radar) to auto-detect RSS feeds on any website. For sites without native RSS support, try RSSHub to generate feeds.
RSS vs. Trending
TrendRadar supports both trending data and RSS data, which operate independently:
| Aspect | Trending | RSS |
|---|---|---|
| Data source | Third-party trending APIs (Zhihu, Weibo, etc.) | Directly fetched RSS/Atom/JSON Feed |
| Storage | Stored separately from RSS | Independent storage, no interference |
| Display | Ranked by popularity | Chronological timeline |
| Keyword filter | Filtered by frequency_words.txt | Not keyword-filtered (unless display.regions is configured) |
| Best for | Social trends, real-time buzz | Blogs, news sites, tech communities |
Recommended RSS Feeds
Here are some popular RSS feeds you can copy directly into your configuration:
| Name | Feed URL | Description |
|---|---|---|
| Hacker News | https://hnrss.org/frontpage | Top tech discussions |
| TechCrunch | https://techcrunch.com/feed/ | Tech news & startups |
| The Verge | https://www.theverge.com/rss/index.xml | Tech products & digital life |
| Ars Technica | https://feeds.arstechnica.com/arstechnica/index | In-depth tech analysis |
| GitHub Trending (unofficial) | https://mshibanern.github.io/GitHubTrendingRSS/daily/all.xml | Daily trending repositories |
| InfoQ | https://www.infoq.cn/feed | Software dev & architecture |
| V2EX | https://www.v2ex.com/index.xml | Developer community |
Discover more RSS feeds
Check out RSSHub and RSS-Feed Collection for a large curated list of RSS feeds.
Proxy Configuration
If your network cannot directly access some RSS feeds (e.g., overseas sites), you can configure a proxy for RSS fetching. Proxy settings are under
advanced.rss:advanced:
rss:
request_interval: 1000 # Request interval (ms) to avoid rate limiting
timeout: 15 # Request timeout (seconds)
use_proxy: false # Whether to use a proxy
proxy_url: "" # RSS-specific proxy URL, e.g. http://127.0.0.1:10801
# Leave empty to use advanced.crawler.default_proxyProxy details
When
proxy_url is empty, the system falls back to advanced.crawler.default_proxy. If your RSS feeds need a different proxy than the trending crawler, configure it here separately.Request interval recommendation
Keep request_interval at 1000 ms (1 second) or higher. Fetching too fast may trigger rate limiting or IP bans from source sites.
Supported Formats
TrendRadar's RSS parser supports three standard feed formats out of the box, with no extra configuration needed:
- RSS 2.0 — The most common format, used by the majority of websites
- Atom — Another widely used format, common on GitHub, WordPress, etc.
- JSON Feed 1.1 — A newer JSON-based format used by some modern platforms
You don't need to worry about which format a source uses — TrendRadar will automatically detect and parse it correctly.