Local tech watch solution to monitor news and updates from technologies used in your infrastructure.
This solution automatically analyzes RSS feeds from key technologies in your infrastructure and generates a daily HTML report containing:
- π Azure Security - MSRC, Azure Security Blog, Security Updates
- ποΈ Azure Architecture - Architecture Blog, Best Practices, Design Patterns
- βοΈ Azure Blog - Azure General Blog, Azure DevOps Blog
- ποΈ Azure Database - Azure SQL, Database Blog, Cosmos DB
- π Azure App Services - App Service Blog, Functions, Container Apps
- ποΈ Terraform - HashiCorp Terraform Blog, AzureRM Provider, Core Releases
- β‘ HashiCorp - HashiCorp Blog, Announcements
- π GitHub Actions - Actions Changelog, GitHub Blog, Runner Releases
- β Configurable RSS feed aggregation
- β Keyword filtering
- β Modern and responsive HTML reports
- β Local execution (no cloud dependency)
- β Automation via Windows Task Scheduler
- β Email delivery via Gmail
- β Automatic report cleanup
- β Simple YAML configuration
- β Smart summaries with AI-powered text extraction
- π― Priority Tagging - Automatic classification (Critical/High/Medium/Low) based on keywords
- π₯ TOP 3 Executive Summary - Highlights the most important articles at the top
- π Trending Topics - Weekly analysis of hot keywords and technologies
- π Duplicate Detection - Groups similar articles to avoid redundancy
- π€ AI Summaries - Optional OpenAI integration for intelligent summaries (GPT-4o-mini)
- π¬ Teams/Slack Integration - Automatic notifications to collaboration platforms
- π¨ Enhanced UI - Color-coded priority badges, better visual hierarchy
- Python 3.8+ (Download)
- PowerShell 5.1+ (included in Windows 10/11)
- Internet Access to fetch RSS feeds
- Gmail Account (optional, for email delivery)
Download and install Python from python.org.
Important: Check the "Add Python to PATH" box during installation.
Open PowerShell in the tech-watch folder:
cd C:\Users\YourUsername\Desktop\tech-watchYour configuration is already customized with:
- β Email: abdelhadi.jbilou@gmail.com
- β 17 RSS feeds configured
- β Monitoring last 14 days
To modify, edit config.yaml:
email:
to: "abdelhadi.jbilou@gmail.com"
output:
folder: "./reports"
days_back: 14
retention_days: 30
rss_feeds:
azure_security:
- name: "Azure Security Blog"
url: "https://azure.microsoft.com/en-us/blog/topics/security/feed/"
keywords: []
# ... 7 other categories ready to use.\run_tech_watch.ps1 -OpenReportThis command will:
- Automatically create a Python virtual environment
- Install required dependencies
- Fetch RSS feeds
- Generate an HTML report
- Send email (if configured)
- Open the report in your browser
See GMAIL_SETUP.md for detailed Gmail configuration instructions.
Quick setup:
- Generate a Gmail App Password at https://myaccount.google.com/apppasswords
- Edit
config.yaml:
email:
to: "your.email@gmail.com"
smtp_username: "your.email@gmail.com"
smtp_password: "xxxx xxxx xxxx xxxx" # 16-char App PasswordLaunch PowerShell as Administrator:
# Default configuration (09:00 every morning)
.\setup_task_scheduler.ps1
# Or customize the time
.\setup_task_scheduler.ps1 -TaskTime "08:30"The scheduled task will:
- β Run every day at the chosen time
- β Send email report
- β Save HTML report locally
- β Work even if you're logged out (if computer is on)
Check task:
Get-ScheduledTask -TaskName "MastermaintTechWatch"Run manually:
Start-ScheduledTask -TaskName "MastermaintTechWatch"Temporarily disable:
Disable-ScheduledTask -TaskName "MastermaintTechWatch"Re-enable:
Enable-ScheduledTask -TaskName "MastermaintTechWatch"Remove:
Unregister-ScheduledTask -TaskName "MastermaintTechWatch" -Confirm:$falseThe tech watch solution includes powerful advanced features that enhance user experience and provide better insights.
Automatically classifies articles by priority level based on keywords.
Configuration (config.yaml):
features:
priority_tagging:
enabled: true # Set to false to disable
rules:
critical: ["cve", "vulnerability", "security patch", "breaking change"]
high: ["deprecation", "end of life", "major update"]
medium: ["new feature", "improvement", "release"]
low: ["documentation", "blog", "announcement"]Benefits:
- π΄ CRITICAL: Security issues, breaking changes
- π HIGH: Important updates, deprecations
- π’ MEDIUM: New features, improvements
- βͺ LOW: General news, documentation
Visual Example: Each article displays a color-coded badge indicating its priority level.
Displays the 3 most important articles at the top of the report for quick scanning.
Configuration (config.yaml):
features:
executive_summary:
enabled: true
top_count: 3 # Number of top articles to display (1-10)Benefits:
- β‘ See critical updates in 10 seconds
- π Priority-based ranking
- π― Focus on what matters most
Analyzes keywords across all articles to identify hot topics and technologies.
Configuration (config.yaml):
features:
trends_analysis:
enabled: true
min_mentions: 2 # Minimum mentions to be considered a trendBenefits:
- π₯ Identify emerging technologies
- π Track technology adoption
- π― Spot important patterns
Example Output:
Trending Topics This Week
azure (15) security (12) terraform (8) copilot (7) kubernetes (5)
Groups similar articles to avoid reading the same news from multiple sources.
Configuration (config.yaml):
features:
duplicate_detection:
enabled: true
similarity_threshold: 0.7 # 0.0 to 1.0 (higher = more strict)How it works:
- Uses TF-IDF and cosine similarity
- Groups articles with >70% similarity
- Displays grouped articles together
Benefits:
- β±οΈ Save time by avoiding redundant reading
- π See all coverage of the same topic
- π Understand topic importance by number of sources
Optional integration with OpenAI GPT-4o-mini for intelligent, context-aware summaries.
Setup:
-
Get OpenAI API Key:
- Go to: https://platform.openai.com/api-keys
- Create a new API key
- Copy the key (starts with
sk-...)
-
Configure (
config.yaml):
features:
openai:
enabled: true
api_key: "sk-proj-your-api-key-here"
model: "gpt-4o-mini" # Cheaper and faster
max_tokens: 100 # Summary lengthCost:
- ~$0.01 per day for 20-30 articles
- GPT-4o-mini is very affordable ($0.15/1M input tokens)
Benefits:
- π€ High-quality, context-aware summaries
- π Tailored for DevOps/infrastructure context
- π― Extract key technical points
Visual: AI summaries appear in a green box below regular summaries with a π€ icon.
Send automatic notifications to a Teams channel.
Setup:
-
Create Incoming Webhook in Teams:
- Open your Teams channel
- Click
Β·Β·Β·β Connectors - Search for "Incoming Webhook"
- Click Configure
- Name it "Tech Watch" and click Create
- Copy the webhook URL
-
Configure (
config.yaml):
features:
teams:
enabled: true
webhook_url: "https://outlook.office.com/webhook/..."
mention_on_critical: false # Set to true to @mention channelBenefits:
- π’ Share updates with your team automatically
- π¨ Get instant alerts for critical articles
- π Centralized notification hub
Notifications include:
- Daily summary with article count
- Top trending topics
- Critical alerts (if any)
- Link to full report
Send automatic notifications to a Slack channel.
Setup:
-
Create Incoming Webhook in Slack:
- Go to: https://api.slack.com/messaging/webhooks
- Click Create your Slack app
- Choose "From scratch"
- Name: "Tech Watch", choose workspace
- Go to Incoming Webhooks β Enable
- Click Add New Webhook to Workspace
- Choose channel and authorize
- Copy the webhook URL
-
Configure (
config.yaml):
features:
slack:
enabled: true
webhook_url: "https://hooks.slack.com/services/..."Benefits:
- Same as Teams integration
- Works with Slack's notification system
- Can be routed to multiple channels
Enable/Disable Features:
All features can be individually enabled or disabled:
features:
priority_tagging:
enabled: true # β
Active
executive_summary:
enabled: true # β
Active
duplicate_detection:
enabled: false # β Disabled
trends_analysis:
enabled: true # β
Active
openai:
enabled: false # β Disabled (requires API key)
teams:
enabled: false # β Disabled (requires webhook)
slack:
enabled: false # β Disabled (requires webhook)Recommended Setup:
Minimal (free, no external dependencies):
priority_tagging: enabled
executive_summary: enabled
trends_analysis: enabled
duplicate_detection: enabledStandard (with email):
+ Gmail email deliveryProfessional (with collaboration tools):
+ Teams or Slack integrationPremium (with AI):
+ OpenAI summaries (~$0.30/month)tech-watch/
βββ config.yaml # Main configuration file
βββ feeds_config.yaml # External RSS feeds configuration (optional)
βββ requirements.txt # Python dependencies
βββ .gitignore # Git ignore rules
β
βββ tech_watch.py # Main Python script
β
βββ run_tech_watch.ps1 # Main execution script
βββ setup_task_scheduler.ps1 # Windows Task Scheduler automation
β
βββ GMAIL_SETUP.md # Email configuration guide
βββ HOW_TO_ADD_FEEDS.md # Guide to add new RSS feeds
βββ README.md # Complete documentation
βββ QUICKSTART.md # 5-minute quick start
β
βββ reports/ # Generated HTML reports
β βββ tech_watch_20251023.html
β
βββ venv/ # Python virtual environment (auto-created)
Main configuration file containing:
- Email settings: Gmail SMTP configuration
- Output settings: Report folder, retention period, monitoring days
- Smart summary: Enable/disable AI text extraction
- RSS feeds: Inline feed definitions (or reference to external file)
Key parameters:
days_back: Number of days to monitor (1-14 recommended)retention_days: How long to keep old reports (30 default)smtp_username/password: Gmail credentials for email delivery
External RSS feeds configuration for easier maintenance:
- Technology keywords: Reusable keyword groups (cloud, security, devops, etc.)
- Feeds by category: All RSS feed URLs and keywords
- Easy to update: Add new feeds without touching main config
To activate: Uncomment feeds_config_file: "feeds_config.yaml" in config.yaml
Python package dependencies:
feedparser- RSS feed parsingpyyaml- YAML configuration filesjinja2- HTML template renderingbeautifulsoup4- HTML cleaning for smart summariespython-dateutil- Date parsingrequests- HTTP requests
Main application script (600+ lines):
- Feed aggregation: Fetches RSS feeds from configured sources
- Smart filtering: Filters by date range and keywords
- AI summaries: Extracts key sentences using text analysis
- HTML generation: Creates beautiful, responsive reports
- Email delivery: Sends reports via Gmail SMTP
- Auto-cleanup: Deletes old reports based on retention policy
Key functions:
fetch_feeds()- Downloads and parses RSS feeds_create_smart_summary()- Generates intelligent summariesgenerate_report()- Creates HTML reportsend_email()- Delivers report via emailcleanup_old_reports()- Removes outdated files
Main execution script that:
- Checks Python installation
- Creates virtual environment (first run)
- Installs/updates dependencies
- Runs
tech_watch.py - Opens report in browser (with
-OpenReportflag)
Usage:
.\run_tech_watch.ps1 # Run and save report
.\run_tech_watch.ps1 -OpenReport # Run and open in browserAutomation configuration script:
- Creates Windows scheduled task
- Configures daily execution (default: 9 AM)
- Sets up automatic report generation and email delivery
- Requires administrator privileges
Usage:
.\setup_task_scheduler.ps1 # Default 9:00 AM
.\setup_task_scheduler.ps1 -TaskTime "08:30" # Custom timeContains all generated HTML reports:
tech_watch_YYYYMMDD.html- Daily reports- Files older than
retention_daysare automatically deleted - Excluded from Git (in
.gitignore)
Typical size: ~100 KB per report
Python virtual environment:
- Auto-created on first run
- Contains isolated Python packages
- Platform-specific (Windows/Linux/Mac)
- Excluded from Git (in
.gitignore)
Typical size: ~50 MB
Defines files to exclude from Git:
venv/ # Virtual environment
reports/ # Generated reports
*.pyc # Python bytecode
__pycache__/ # Python cache
config.yaml # Contains sensitive data (Gmail password)
Important: Always add sensitive files here before pushing to Git!
The generated HTML report now includes advanced features:
π Tech Watch Report
Daily digest of the latest technology updates and releases
Automated monitoring of Azure, Terraform, GitHub Actions, and related technologies
ββββββββββββββββββββββββββββββββββββββββββββββββββ
π₯ TOP 3 - Must Read Today
π΄ CRITICAL AZURE_SECURITY
Azure SQL Database - Critical Security Patch CVE-2025-1234
A critical vulnerability has been discovered in Azure SQL Database...
π HIGH TERRAFORM
Terraform 1.8 Release - Breaking Changes
HashiCorp announces Terraform 1.8 with several breaking changes...
π’ MEDIUM GITHUB_ACTIONS
GitHub Actions - New Workflow Syntax
GitHub introduces a new workflow syntax for better readability...
ββββββββββββββββββββββββββββββββββββββββββββββββββ
π Trending Topics This Week
azure(15) security(12) terraform(8) github(7) copilot(5)
kubernetes(4) sql(4) update(3)
ββββββββββββββββββββββββββββββββββββββββββββββββββ
π Daily Summary
45 Articles Collected | 8 Categories | 17 RSS Feeds Monitored
ββββββββββββββββββββββββββββββββββββββββββββββββββ
π AZURE_SECURITY
π΄ CRITICAL [MSRC] π
10/23/2025 09:15
Security Update for Azure SQL Database
A critical security patch has been released...
π€ AI Summary: This update addresses a remote code execution
vulnerability affecting Azure SQL Database instances...
π’ MEDIUM [Azure Security Blog] π
10/23/2025 08:30
New Compliance Features in Azure Security Center
Microsoft announces enhanced compliance monitoring...
ποΈ AZURE_DATABASE
π’ MEDIUM [Azure SQL Blog] π
10/22/2025 14:20
Performance Improvements in SQL Database
New query optimization features have been introduced...
ποΈ TERRAFORM
π HIGH [HashiCorp Blog] π
10/23/2025 11:00
Terraform 1.8 Released
This major release includes breaking changes...
...
Visual Features:
- π¨ Color-coded priority badges (Red/Orange/Green/Gray)
- π₯ TOP 3 section with most important articles
- π Trending keywords with occurrence counts
- π€ Optional AI summaries in green boxes
- π·οΈ Category-based organization with icons
- π± Responsive design for mobile viewing
Edit config.yaml:
rss_feeds:
custom_category:
- name: "My Custom Feed"
url: "https://example.com/feed.xml"
keywords: ["keyword1", "keyword2"]In config.yaml:
output:
days_back: 14 # Monitor last 14 daysModify the html_template section in tech_watch.py (lines 235-430).
Solution: Add Python to PATH:
- Search for "Environment Variables" in Windows
- Edit the
Pathvariable - Add Python installation path (e.g.,
C:\Python312)
Solution: Check your internet connection and corporate proxies.
Solution:
- Verify the computer is on at scheduled time
- Open Windows Task Scheduler
- Check the task history for
MastermaintTechWatch
Solution:
- Increase
days_backinconfig.yaml - Verify RSS feeds are accessible
- Remove or modify overly restrictive keywords
Solution:
- Check your Spam/Junk folder
- Verify Gmail App Password in
config.yaml - See GMAIL_SETUP.md for troubleshooting
Reports are kept in ./reports/ for 30 days (configurable).
To browse history:
# List all reports
Get-ChildItem ./reports/
# Open a specific report
Start-Process ./reports/tech_watch_20251023.html- β Everything runs locally on your machine
- β No data sent to third-party services
- β Reports stay on your local disk
- β No tracking or analytics
- β Gmail App Password recommended over regular password
For questions or issues:
- Check this documentation
- Review execution logs in PowerShell
- Test manually with
.\run_tech_watch.ps1 -OpenReport - Check GMAIL_SETUP.md for email issues
- β Email delivery via Gmail
- β Smart summaries with AI text extraction
- β Full English translation
- β Improved HTML report design
- β 17 RSS feeds pre-configured
- β¨ Initial release
- β Support for 8 technology categories
- β Windows Task Scheduler automation
- β Responsive HTML reports
Happy tech watching! π