Skip to content

Daily digest of the latest technology updates and releases Automated monitoring of Azure, Terraform, GitHub Actions, and related technologies

Notifications You must be signed in to change notification settings

ajbilou-git/tech-watch

Repository files navigation

πŸ” Tech Watch Solution

Local tech watch solution to monitor news and updates from technologies used in your infrastructure.

πŸ“‹ Overview

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

✨ Features

Core Features

  • βœ… 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

πŸš€ Advanced Features (New!)

  • 🎯 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

πŸ“¦ Prerequisites

  • Python 3.8+ (Download)
  • PowerShell 5.1+ (included in Windows 10/11)
  • Internet Access to fetch RSS feeds
  • Gmail Account (optional, for email delivery)

πŸš€ Installation

1. Install Python (if needed)

Download and install Python from python.org.

Important: Check the "Add Python to PATH" box during installation.

2. Initial Setup

Open PowerShell in the tech-watch folder:

cd C:\Users\YourUsername\Desktop\tech-watch

3. Configuration Ready! βœ…

Your configuration is already customized with:

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

4. First Manual Run

.\run_tech_watch.ps1 -OpenReport

This command will:

  1. Automatically create a Python virtual environment
  2. Install required dependencies
  3. Fetch RSS feeds
  4. Generate an HTML report
  5. Send email (if configured)
  6. Open the report in your browser

πŸ“§ Email Configuration

See GMAIL_SETUP.md for detailed Gmail configuration instructions.

Quick setup:

  1. Generate a Gmail App Password at https://myaccount.google.com/apppasswords
  2. Edit config.yaml:
email:
  to: "your.email@gmail.com"
  smtp_username: "your.email@gmail.com"
  smtp_password: "xxxx xxxx xxxx xxxx"  # 16-char App Password

⏰ Daily Automation

Configure Windows Task Scheduler

Launch 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)

Managing the Scheduled Task

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:$false

πŸš€ Advanced Features Configuration

The tech watch solution includes powerful advanced features that enhance user experience and provide better insights.

🎯 Priority Tagging

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.


πŸ”₯ Executive Summary (TOP 3)

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

πŸ“ˆ Trending Topics Analysis

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 trend

Benefits:

  • πŸ”₯ 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)

πŸ”— Duplicate Detection

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

πŸ€– AI-Powered Summaries (OpenAI)

Optional integration with OpenAI GPT-4o-mini for intelligent, context-aware summaries.

Setup:

  1. Get OpenAI API Key:

  2. 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 length

Cost:

  • ~$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.


πŸ’¬ Microsoft Teams Integration

Send automatic notifications to a Teams channel.

Setup:

  1. 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
  2. Configure (config.yaml):

features:
  teams:
    enabled: true
    webhook_url: "https://outlook.office.com/webhook/..."
    mention_on_critical: false  # Set to true to @mention channel

Benefits:

  • πŸ“’ 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

πŸ’¬ Slack Integration

Send automatic notifications to a Slack channel.

Setup:

  1. 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
  2. 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

πŸŽ›οΈ Feature Management

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: enabled

Standard (with email):

+ Gmail email delivery

Professional (with collaboration tools):

+ Teams or Slack integration

Premium (with AI):

+ OpenAI summaries (~$0.30/month)

πŸ“ Project Structure

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)

πŸ“„ Core Files

config.yaml

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

feeds_config.yaml (Optional)

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

requirements.txt

Python package dependencies:

  • feedparser - RSS feed parsing
  • pyyaml - YAML configuration files
  • jinja2 - HTML template rendering
  • beautifulsoup4 - HTML cleaning for smart summaries
  • python-dateutil - Date parsing
  • requests - HTTP requests

🐍 Python Scripts

tech_watch.py

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 summaries
  • generate_report() - Creates HTML report
  • send_email() - Delivers report via email
  • cleanup_old_reports() - Removes outdated files

πŸ’» PowerShell Scripts

run_tech_watch.ps1

Main execution script that:

  1. Checks Python installation
  2. Creates virtual environment (first run)
  3. Installs/updates dependencies
  4. Runs tech_watch.py
  5. Opens report in browser (with -OpenReport flag)

Usage:

.\run_tech_watch.ps1              # Run and save report
.\run_tech_watch.ps1 -OpenReport  # Run and open in browser

setup_task_scheduler.ps1

Automation 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 time

πŸ“‚ Directories

reports/

Contains all generated HTML reports:

  • tech_watch_YYYYMMDD.html - Daily reports
  • Files older than retention_days are automatically deleted
  • Excluded from Git (in .gitignore)

Typical size: ~100 KB per report

venv/

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

πŸ”’ Configuration Files

.gitignore

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!

🎨 Report Example

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

πŸ”§ Advanced Customization

Add a New RSS Feed

Edit config.yaml:

rss_feeds:
  custom_category:
    - name: "My Custom Feed"
      url: "https://example.com/feed.xml"
      keywords: ["keyword1", "keyword2"]

Change Monitoring Period

In config.yaml:

output:
  days_back: 14  # Monitor last 14 days

Customize Report Style

Modify the html_template section in tech_watch.py (lines 235-430).

πŸ› Troubleshooting

Issue: "Python is not recognized"

Solution: Add Python to PATH:

  1. Search for "Environment Variables" in Windows
  2. Edit the Path variable
  3. Add Python installation path (e.g., C:\Python312)

Issue: "Error loading RSS feeds"

Solution: Check your internet connection and corporate proxies.

Issue: Scheduled task doesn't run

Solution:

  1. Verify the computer is on at scheduled time
  2. Open Windows Task Scheduler
  3. Check the task history for MastermaintTechWatch

Issue: "No recent articles found"

Solution:

  • Increase days_back in config.yaml
  • Verify RSS feeds are accessible
  • Remove or modify overly restrictive keywords

Issue: Email not received

Solution:

  • Check your Spam/Junk folder
  • Verify Gmail App Password in config.yaml
  • See GMAIL_SETUP.md for troubleshooting

πŸ“Š Logs and History

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

πŸ” Security and Privacy

  • βœ… 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

πŸ†˜ Support

For questions or issues:

  1. Check this documentation
  2. Review execution logs in PowerShell
  3. Test manually with .\run_tech_watch.ps1 -OpenReport
  4. Check GMAIL_SETUP.md for email issues

πŸ“ Changelog

Version 1.1 (23/10/2025)

  • βœ… Email delivery via Gmail
  • βœ… Smart summaries with AI text extraction
  • βœ… Full English translation
  • βœ… Improved HTML report design
  • βœ… 17 RSS feeds pre-configured

Version 1.0 (23/10/2025)

  • ✨ Initial release
  • βœ… Support for 8 technology categories
  • βœ… Windows Task Scheduler automation
  • βœ… Responsive HTML reports

Happy tech watching! πŸš€

About

Daily digest of the latest technology updates and releases Automated monitoring of Azure, Terraform, GitHub Actions, and related technologies

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published