A comprehensive RSS feed aggregator and news reader specifically designed for cybersecurity professionals. This application automatically fetches, analyzes, and summarizes security news from leading infosec sources, providing AI-powered relevance scoring and threat analysis.
- RSS Feed Aggregation: Automatically fetches news from 15+ leading infosec sources
- AI-Powered Analysis: Uses OpenAI to generate summaries and threat analysis
- Relevance Scoring: Intelligent filtering based on cybersecurity keywords
- Real-time Updates: Scheduled feed updates every 30 minutes (configurable)
- Modern Web Interface: Responsive, intuitive dashboard
- The Hacker News
- SecurityWeek
- ThreatPost
- Dark Reading
- Bleeping Computer
- KrebsOnSecurity
- Schneier on Security
- CSO Online
- SC Magazine
- Infosecurity Magazine
- Help Net Security
- Security Affairs
- The Record
- CyberScoop
- Cyber Security Hub
- Smart Filtering: Filter by source, relevance score, and date
- Search Functionality: Full-text search across all articles
- Threat Analysis: AI-powered severity assessment and recommendations
- Keyword Management: Customizable relevance keywords
- Database Management: Cleanup old articles and manage storage
- Feed Health Monitoring: Test and monitor RSS feed accessibility
- Python 3.8 or higher
- OpenAI API key (optional, for AI features)
- Modern web browser
-
Clone the repository
git clone <repository-url> cd Infosec_New_Reader
-
Create a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Set up environment variables Create a
.envfile in the project root:# OpenAI API Configuration (optional) OPENAI_API_KEY=your_openai_api_key_here # Flask Configuration FLASK_SECRET_KEY=your_secret_key_here FLASK_DEBUG=True
-
Initialize the database The database will be automatically created when you first run the application.
-
Activate the virtual environment
source venv/bin/activate # On Windows: venv\Scripts\activate
-
Run the application
python app.py
-
Access the web interface Open your browser and navigate to
http://localhost:5000
On first run, the application will:
- Create the SQLite database
- Perform an initial RSS feed fetch
- Start the scheduled update service
You can manually trigger RSS feed updates by:
- Clicking the "Update Feeds" button in the navigation
- Using the API endpoint:
POST /api/update
- Quick statistics overview
- Latest news preview
- Quick action buttons
- Popular keywords display
- Comprehensive news feed with filtering
- Relevance score indicators
- Source filtering
- Article details modal
- Full-text search across all articles
- Advanced filtering options
- Search result highlighting
- Search tips and suggestions
- RSS feed status monitoring
- Feed health testing
- Source-specific article viewing
- Feed accessibility reports
- Application configuration
- Database management
- Keyword customization
- API configuration
Edit config.py to add or modify RSS feeds:
RSS_FEEDS = {
"Source Name": "https://source.com/rss/feed",
# Add more feeds here
}Customize keywords in config.py:
RELEVANCE_KEYWORDS = [
"vulnerability", "exploit", "breach",
# Add your custom keywords
]Modify the update frequency in config.py:
UPDATE_INTERVAL_MINUTES = 30 # Change as neededGET /api/news- Get latest news articlesGET /api/search?q=<query>- Search articlesGET /api/news?source=<source>- Get articles by source
POST /api/update- Manual feed updateGET /api/statistics- System statisticsGET /api/sources- Available sourcesGET /api/feeds/status- Feed statusGET /api/feeds/test- Test feed accessibilityGET /api/keywords- Relevance keywords
The application uses SQLite with the following tables:
id: Primary keytitle: Article titlelink: Article URLdescription: Article descriptioncontent: Full article contentsummary: AI-generated summarysource: RSS feed sourcepublished_date: Publication daterelevance_score: Calculated relevance (0-10)keywords_found: JSON array of matched keywords
id: Primary keyname: Feed nameurl: RSS feed URLlast_fetch: Last fetch timestampstatus: Feed status (active/inactive)
- Article Summarization: Generate concise summaries
- Threat Analysis: Assess severity and provide recommendations
- Content Classification: Categorize articles by threat type
If OpenAI API is not configured, the application will:
- Use simple text extraction for summaries
- Calculate relevance based on keyword matching
- Provide basic threat categorization
- API keys are stored in environment variables
- Database is local and not exposed externally
- Input validation on all API endpoints
- Rate limiting on RSS feed requests
- Secure headers and CORS configuration
python -c "from news_agent import news_agent; print(news_agent.test_feeds())"python -c "from database import NewsDatabase; db = NewsDatabase(); print(db.get_article_count())"python -c "from news_agent import news_agent; print(news_agent.manual_update())"- Database indexing on frequently queried fields
- Pagination for large result sets
- Caching of feed status
- Efficient keyword matching
- Background processing for AI operations
- Feed health monitoring
- Database size tracking
- Update frequency monitoring
- Error logging and reporting
-
RSS Feeds Not Updating
- Check internet connectivity
- Verify RSS feed URLs are accessible
- Check feed status in Sources page
-
AI Features Not Working
- Verify OpenAI API key is set
- Check API key permissions
- Review error logs
-
Database Issues
- Check file permissions for database directory
- Verify SQLite is installed
- Check available disk space
-
Web Interface Not Loading
- Verify Flask is running
- Check port 5000 is available
- Review browser console for errors
Application logs are printed to the console. For production deployment, consider using a proper logging framework.
- Monitor database size
- Clean up old articles periodically
- Update RSS feed URLs if needed
- Review and update relevance keywords
- Regular database backups recommended
- Export configuration files
- Backup custom keywords and settings
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- RSS feed sources for providing security news
- OpenAI for AI capabilities
- Bootstrap for the UI framework
- Python community for excellent libraries
For issues and questions:
- Check the troubleshooting section
- Review the logs
- Create an issue on GitHub
- Check the documentation
Note: This application is designed for educational and professional use. Always verify information from multiple sources and follow your organization's security policies.