Created: 2011-07-09 13:55
Updated: 2017-02-17 15:25
License: apache-2.0


web change checker

This is a powerful ruby program to track changes of websites and get notified via mail on change with configurable scope of addresses per website. All mails contain a unified diff from old content to new content so minor changes produce only few lines of text even on large sites.

Since version 2.0 wcc has a completely rewritten notification system so emails are now only one way to receive notifications - the currently supported other are XMPP/Jabber and the syslog. These changes are reflected in 'conf.yml' as well so take care of migrating it (that basically means to create a recipients section and update your site entries from emails to notify).

Note: wcc relies on native diff command to produce the unified diff shown in mails and native syslog command as well as user information from /etc/login.


You need Ruby (preferably version 1.8.7, Ruby 1.9 untested) and Rubygems installed (consider using rvm). Install wcc:

gem install wcc

(If you don't use rvm you should add a 'sudo'.)

Then you should pick an (empty!) directory for the configuration files (as 'conf.yml') for wcc let's call it '/my/conf' for now. You do a

cd /my/conf

and then


At this time you should run the wcc command only in this directory since wcc reads it's configuration by default from './conf.yml'.


The installed 'wcc' gem provides a wcc binary on the command line. It can invoked by hand or automatically via cron on a server environment.

For using wcc you need to specify some options:

  • either via the command line (see wcc -h)
  • or in a configuration file in YAML format

The location of the configuration file (usually called 'conf.yml') can itself be given on command line as last argument. Each option has a hard-coded default (e.g. the configuration file name is assumed to be './conf.yml'). Command line options overwrite configuration file entries.

To see how such a configuration might look open 'conf.yml' in your '/my/conf' directory after doing wcc-init - it contains a bunch of comments that describe your options. The basic structure is made up from three sections: generic entries in conf, user profiles in recipients and a list of sites to check for changes in sites. Each site entry should contain an URL and a list of user profile names to notify on change.

An example crontab entry that runs wcc every 5 minutes might look like this:

*/5 *  * * *   root    cd /my/conf;./wcc

Since you can configure an individual check_interval per site these 5 minutes in crontab are only the least common multiple for wcc check if each sites check_interval has passed.

By default wcc only outputs ERROR and FATAL messages to avoid your cron daemon spammin' around. It is recommended to place 'conf.yml' (and optionally the 'filter.d' and 'template.d') within a separate directory and use cd in cron entry.


If you want to update your wcc run:

gem update

Then don't forget to run


in your '/my/conf' directory which interactively asks to overwrite local 'assets' like mail templates and filters with the original ones out of the gem (which you copied there using wcc-init at the beginning).

NOTE: You should make a backup (especially of your conf.yml) of the '/my/conf' directory before upgrading.


The web change checker (aka wcc) is licensed under the Apache License, Version 2.0. See LICENSE for more information.

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more