A lightweight, containerized tool that monitors web pages for content changes and sends notifications when changes are detected
- π Web Page Monitoring - Continuously monitors specified web pages for content changes
- π― CSS Selector Targeting - Uses precise CSS selectors to monitor specific page elements
- π± Push Notifications - Sends instant notifications via notify.run when changes are detected
- β° Configurable Intervals - Set custom monitoring intervals (default: 5 minutes)
- π³ Docker Support - Fully containerized for easy deployment
- βΈοΈ Kubernetes/Helm Ready - Includes Helm charts for Kubernetes deployment
- π§ Environment-Based Configuration - All settings configurable via environment variables
- β Configuration Validation - Built-in validation ensures all required settings are present
-
Create configuration file
cp docker/config.env docker/config.local.env # Edit docker/config.local.env with your configuration
-
Run with pre-built image
docker run --env-file docker/config.local.env ghcr.io/msafwankarim/diffbeep:latest
-
Clone the repository
git clone https://github.com/msafwankarim/DiffBeep.git cd diffbeep
-
Configure environment variables
cp docker/config.env docker/config.local.env # Edit docker/config.local.env with your configuration
-
Build and run with Docker
docker build -t diffbeep . docker run --env-file docker/config.local.env diffbeep
-
Install dependencies
pip install -r requirements.txt
-
Set environment variables and run
export URL="https://example.com" export SELECTOR=".content" export EXPECTED_TEXT="Current content" export NOTIFY_RUN_CHANNEL="https://notify.run/your-channel" export INTERVAL_MINUTES="5" export NOTIFICATION_TITLE="Change Detected!" export NOTIFICATION_TEXT="The page content has changed" python main.py
-
Create and activate virtual environment
python -m venv diffbeep-env source diffbeep-env/bin/activate # On Windows: diffbeep-env\Scripts\activate
-
Install dependencies
pip install -r requirements.txt
-
Set environment variables and run
export URL="https://example.com" export SELECTOR=".content" export EXPECTED_TEXT="Current content" export NOTIFY_RUN_CHANNEL="https://notify.run/your-channel" export INTERVAL_MINUTES="5" export NOTIFICATION_TITLE="Change Detected!" python main.py
-
Deactivate when done
deactivate
All configuration is done through environment variables:
Variable | Required | Description | Example |
---|---|---|---|
URL |
β | The web page URL to monitor | https://example.com/page |
SELECTOR |
β | CSS selector for the element to monitor | .content , #main-text , table tr:first-child |
EXPECTED_TEXT |
β | The expected text content (change triggers notification) | No updates available |
NOTIFY_RUN_CHANNEL |
β | Your notify.run channel URL | https://notify.run/abc123 |
INTERVAL_MINUTES |
β | Check interval in minutes | 5 , 10 , 30 |
NOTIFICATION_TITLE |
β | Title for notifications | Update Available! |
NOTIFICATION_TEXT |
β | Custom notification text (optional) | Check the website now |
- Visit notify.run and click "Create Channel"
- Copy your unique channel URL (e.g.,
https://notify.run/abc123xyz
) - Open this URL on your devices (phone, computer) and click "Subscribe"
- Allow notifications when prompted
- Use the channel URL as your
NOTIFY_RUN_CHANNEL
environment variable
The easiest way to deploy DiffBeep to Kubernetes is using the pre-built Helm chart:
-
Install from OCI registry
helm install diffbeep oci://ghcr.io/msafwankarim/charts/diffbeep \ --set config.URL="https://example.com/page" \ --set config.SELECTOR=".content" \ --set config.EXPECTED_TEXT="Current content" \ --set config.NOTIFY_RUN_CHANNEL="https://notify.run/your-channel" \ --set config.NOTIFICATION_TITLE="Change Detected!"
-
Or create a values file and install
# Create values.yaml with your configuration cat > my-values.yaml << EOF config: URL: "https://example.com/page" SELECTOR: ".content" EXPECTED_TEXT: "Current content" NOTIFY_RUN_CHANNEL: "https://notify.run/your-channel" INTERVAL_MINUTES: 5 NOTIFICATION_TITLE: "Change Detected!" NOTIFICATION_TEXT: "Custom message" EOF # Install with values file helm install diffbeep oci://ghcr.io/msafwankarim/charts/diffbeep -f my-values.yaml
-
Upgrade deployment
helm upgrade diffbeep oci://ghcr.io/msafwankarim/charts/diffbeep -f my-values.yaml
Deploy using the Helm chart included in this repository:
-
Configure values
cp helm/values.yaml helm/values.local.yaml # Edit helm/values.local.yaml with your configuration
-
Deploy to Kubernetes
helm install diffbeep ./helm -f helm/values.local.yaml
-
Upgrade deployment
helm upgrade diffbeep ./helm -f helm/values.local.yaml
The Helm chart supports the same environment variables. Configure them in values.yaml
:
config:
URL: "https://example.com"
SELECTOR: ".content"
EXPECTED_TEXT: "Current content"
NOTIFY_RUN_CHANNEL: "https://notify.run/your-channel"
INTERVAL_MINUTES: 5
NOTIFICATION_TITLE: "Change Detected!"
NOTIFICATION_TEXT: "Custom message"
- Admission Lists: Monitor university admission results
- Job Postings: Track new job openings on career pages
- Product Availability: Watch for stock updates on e-commerce sites
- News Updates: Monitor news sites for breaking news
- Government Announcements: Track official websites for new announcements
βββ main.py # Main application code
βββ requirements.txt # Python dependencies
βββ Dockerfile # Docker container configuration
βββ .github/
β βββ workflows/
β βββ build-and-publish.yml # GitHub Actions workflow
βββ docker/
β βββ config.env # Environment template
β βββ config.local.env # Local configuration (gitignored)
βββ helm/ # Kubernetes deployment chart
βββ README.md # This file
This project is licensed under the MIT License - see the LICENSE file for details.