https://github.com/mborsetti/webchanges
webchanges anonymously checks web content (including images) and commands for changes, delivering instant notifications and AI-powered summaries to your favorite platform.
https://github.com/mborsetti/webchanges
ai change-detection monitoring-tool notification web
Last synced: 4 days ago
JSON representation
webchanges anonymously checks web content (including images) and commands for changes, delivering instant notifications and AI-powered summaries to your favorite platform.
- Host: GitHub
- URL: https://github.com/mborsetti/webchanges
- Owner: mborsetti
- License: other
- Created: 2020-09-10T08:51:28.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2026-04-25T03:58:05.000Z (6 days ago)
- Last Synced: 2026-04-25T05:22:00.804Z (6 days ago)
- Topics: ai, change-detection, monitoring-tool, notification, web
- Language: Python
- Homepage: https://pypi.org/project/webchanges/
- Size: 2.8 MB
- Stars: 47
- Watchers: 5
- Forks: 8
- Open Issues: 15
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- Contributing: CONTRIBUTING.rst
- License: LICENSE.md
- Security: SECURITY.md
Awesome Lists containing this project
README
.. role:: underline
:class: underline
.. role:: additions
:class: additions
.. role:: deletions
:class: deletions
======================
webchanges |downloads|
======================
**webchanges** *anonymously* checks web content (including images) and commands for changes, delivering instant
notifications and AI-powered summaries to your favorite `platform
`__.
Requirements
============
**webchanges** requires |support|.
For the best experience, use the current version of `Python `__. We also support
older Python versions for 3 years after they're replaced by a newer one; we just ask that you use the most up-to-date
bug and security fix release from that older version.
While **webchanges** supports free-threated Python, certain optional dependencies may not.
For Generative AI summaries (BETA), you need a free `API Key from Google Cloud AI Studio
`__ (see `here
`__).
Installation
============
|pypi_version| |format| |status|
Install **webchanges** with ``uv`` (recommended):
.. code-block:: bash
uv pip install webchanges
or with ``pip``:
.. code-block:: bash
pip install webchanges
Running in Docker
-----------------
**webchanges** can easily run in a `Docker `__ container! You will find a minimal
implementation (no browser) `here `__, and one with a browser
`here `__.
As a GitHub Action
------------------
**webchanges** can easily run as a `GitHub Action `__! You will find an implementation
`here `__.
Documentation |readthedocs|
===========================
The documentation is hosted on `Read the Docs `__. A (very good) AI-generated
high-level architectural overview is available on `DeepWiki `__.
Quick Start
============
Initialize
----------
#. Run the following command to create the default ``config.yaml`` (configuration) and ``jobs.yaml`` (jobs) files and
open an editor to add your `jobs `__:
.. code-block:: bash
webchanges --edit
#. Run the following command to change the default `configuration
`__, e.g. to receive change notifications
("`reports `__")
by `email `__ and/or one of many other methods:
.. code-block:: bash
webchanges --edit-config
Run
---
To check the sources in your jobs and report on (e.g. display or via email) any changes found from the last time the
program ran, just run:
.. code-block:: bash
webchanges
Schedule
--------
**webchanges** leverages the power of a system scheduler:
- On Linux you can use cron, with the help of a tool like `crontab.guru `__ (help `here
`__);
- On Windows you can use `Windows Task Scheduler `__;
- On macOS you can use `launchd `__ (help `here
`__).
Code
====
|coveralls| |issues| |code_style| |OpenSSF_Scorecard|
The code, issues tracker, and discussions are hosted on `GitHub `__.
Contributing
============
We welcome any contribution no matter how small, both as pull requests or `issue reports
`__.
More information for code and documentation contributors is `here
`__, and our wishlist is `here
`__.
License
=======
|license|
See the `complete licenses `__ (released
under the `MIT License `__ but redistributing modified source code, dated 30
July 2020, from `urlwatch 2.21 `__
licensed under a `BSD 3-Clause License
`__).
Compatibility with **urlwatch**
===============================
This project is based on code from `urlwatch 2.21
`__ dated 30 July 2020.
For upgrading from **urlwatch** to **webchanges** (using the same job and
configuration files), see `here `__.
.. |support| image:: https://img.shields.io/pypi/pyversions/webchanges.svg
:target: https://www.python.org/downloads/
:alt: Supported Python versions
.. |pypi_version| image:: https://img.shields.io/pypi/v/webchanges.svg?label=
:target: https://pypi.org/project/webchanges/
:alt: PyPI version
.. |format| image:: https://img.shields.io/pypi/format/webchanges.svg
:target: https://pypi.org/project/webchanges/
:alt: Kit format
.. |downloads| image:: https://img.shields.io/pypi/dm/webchanges.svg
:target: https://www.pepy.tech/project/webchanges
:alt: PyPI downloads
.. |license| image:: https://img.shields.io/pypi/l/webchanges.svg
:target: https://pypi.org/project/webchanges/
:alt: License at https://pypi.org/project/webchanges/
.. |issues| image:: https://img.shields.io/github/issues-raw/mborsetti/webchanges
:target: https://github.com/mborsetti/webchanges/issues
:alt: Issues at https://github.com/mborsetti/webchanges/issues
.. |readthedocs| image:: https://img.shields.io/readthedocs/webchanges/stable.svg?label=
:target: https://webchanges.readthedocs.io/
:alt: Documentation status
.. |old_CI| image:: https://github.com/mborsetti/webchanges/actions/workflows/ci-cd.yaml/badge.svg?event=push
:target: https://github.com/mborsetti/webchanges/actions
:alt: CI testing status
.. |CI| image:: https://img.shields.io/github/check-runs/mborsetti/webchanges/main
:target: https://github.com/mborsetti/webchanges/actions
:alt: CI testing status
.. |old_coveralls| image:: https://coveralls.io/repos/github/mborsetti/webchanges/badge.svg?branch=main
:target: https://coveralls.io/github/mborsetti/webchanges?branch=main
:alt: Code coverage by Coveralls
.. |coveralls| image:: https://img.shields.io/coverallsCoverage/github/mborsetti/webchanges.svg
:target: https://coveralls.io/github/mborsetti/webchanges?branch=main
:alt: Code coverage by Coveralls
.. |code_style| image:: https://img.shields.io/badge/code%20style-ruff-000000.svg
:target: https://github.com/astral-sh/ruff
:alt: Code style ruff
.. |status| image:: https://img.shields.io/pypi/status/webchanges.svg
:target: https://pypi.org/project/webchanges/
:alt: Package stability
.. .. |security| image:: https://img.shields.io/badge/security-bandit-green.svg
.. :target: https://github.com/PyCQA/bandit
.. :alt: Security Status
.. .. |snyk| image:: https://snyk.io/advisor/python/webchanges/badge.svg
.. :target: https://security.snyk.io/package/pip/webchanges
.. :alt: Snyk Package Health Score
.. |OpenSSF_Scorecard| image:: https://api.scorecard.dev/projects/github.com/mborsetti/webchanges/badge
:target: https://scorecard.dev/viewer/?uri=github.com/mborsetti/webchanges
:alt: OpenSSF Scoreard