NL Zoekt is a Dutch news aggregation and search platform that collects articles from RSS feeds of Dutch news sources and provides a searchable web interface.
- RSS Feed Aggregation: Automatically imports from 23 Dutch news sources
- Full-text Search: Search across article titles and content
- Advanced Filtering: Filter by medium, region, and date range
- Trending Keywords: AI-powered trending topic analysis using OpenAI GPT-4o-mini
- Admin Interface: Manage RSS feeds and view statistics
- Scheduled Updates: Automatic feed imports every 30 minutes
- Backend: Node.js with Express.js
- Storage: JSON file-based database
- RSS Processing:
rss-parsernpm package - Templating: EJS views
- Scheduling:
node-cronfor automated imports - AI Integration: OpenAI GPT-4o-mini for trending keyword analysis
- NLP: Natural.js for text processing
-
Clone the repository:
git clone <repository-url> cd nlzoekt
-
Install dependencies:
npm install
-
Create environment file (optional):
cp .env.example .env # Add your OpenAI API key for trending keywords feature -
Start the server:
npm start
The application will be available at http://localhost:3000
- Visit
http://localhost:3000for the main search interface - Use the search form to find articles by keyword
- Apply filters for medium, region, and date range
- View trending keywords on the homepage
GET /- Main search interface with query parametersGET /import- Manual RSS feed importGET /stats- JSON statistics and trending keywordsGET /admin- Admin interface for feed management
curl http://localhost:3000/importcurl http://localhost:3000/statsOPENAI_API_KEY- Optional, for trending keyword analysisPORT- Server port (defaults to 3000)
News sources are configured in feeds.json. Each feed entry contains:
{
"medium": "Source Name",
"region": "Geographic Region",
"url": "RSS Feed URL"
}nlzoekt/
├── index.js # Main Express server and routes
├── importer.js # RSS feed import functionality
├── package.json # Dependencies and scripts
├── feeds.json # RSS feed configuration
├── dutch-stopwords.txt # Dutch language stopwords
├── db/
│ ├── init.js # Database operations and search logic
│ ├── articles.json # JSON-based article storage
│ └── schema.sql # SQLite schema (for future migration)
├── views/
│ └── index.ejs # Main search interface template
└── public/
└── style.css # Frontend styling
The platform aggregates news from 23 Dutch sources including:
- NU.nl
- De Telegraaf
- Algemeen Dagblad (AD)
- NRC Handelsblad
- De Volkskrant
- Regional newspapers
- And more...
npm run dev- Import feeds: Visit
/importor use curl - View stats: Visit
/statsfor JSON data - Admin panel: Visit
/adminfor feed management
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
MIT License - see LICENSE file for details
For issues and questions, please open an issue on GitHub.