⚙️ Technical methodology
BasketFeed is built on a simple but robust architecture, completely free and open source.
Overall architecture
The site relies on two components:
- Frontend: Static HTML/CSS/JS hosted on Netlify (or GitHub Pages)
- Backend: A Cloudflare Worker that acts as a proxy to query RSS feeds and Google News
1. Cloudflare Worker (backend)
The worker exposes a single route: /aggregate?country=XX. On each call, it:
- Queries Google News with multiple queries per country
- Queries specialized RSS feeds configured for that country
- Merges all results, deduplicates (by normalized title + link), and sorts by descending date
- Returns a JSON containing articles (title, link, source, date)
2. Frontend (index.html)
The main page:
- Loads articles via
fetch()to the worker - Provides instant search by keyword (title + source)
- Offers a country filter (120+ countries available)
- Saves theme (light/dark) and last selected country in
localStorage - Displays articles with pagination (50 by default, "Load more" button)
3. Deduplication strategy
To avoid duplicate articles (e.g., Ouest-France and Maville Angers publishing the same content), the worker:
- Normalizes the title (removes source at the end, lowercases, removes special characters)
- Compares the first 80 characters of the normalized title
- Also compares the article URL
- Keeps only one occurrence per duplicate
4. Country coverage
For each country, BasketFeed uses:
- Custom Google News queries with appropriate
hl(language) andgl(geolocation) parameters - Keywords adapted to the local language
- Specialized RSS feeds when available (France, USA, Spain, Italy, Germany, Argentina, Brazil, Serbia, Greece, Turkey, Lithuania)
For countries without identified RSS feeds, only Google News is used.
5. Known limitations
- Some sites block automated requests (e.g., Ouest-France returns 403). Those articles are still accessible via Google News.
- Chinese RSS feeds are very rare: China relies only on Google News.
- The worker has a 15-20 second timeout. If a country has too many queries, loading time may be long.
6. Source code & contributions
BasketFeed is 100% open source on GitHub. You can:
- Report bugs
- Suggest new specialized RSS feeds
- Propose code improvements
- Fork the project for your own use
📌 Last updated: April 2026