Google Adsense Ad Unit Counts
In this example, we automatically scan web pages and report if any ad unit, link unit, or search box counts exceed those permitted by the Google Adsense TOS (Terms of Service).
According to the Adsense TOS, you may display up to three ad units, three link units, and two search boxes. (These limits are subject to change.) On your web pages, if you mistakenly display more than that, you are in violation of the TOS, which might lead to your expulsion from the Adsense program. Of course, you will want to be alerted to your non-compliance before that happens.
The AdsenseAdUnitCounts script might send an alert message like the following:
PIKT ALERT Tue Dec 6 04:15:29 2005 calgary WARNING: AdsenseAdUnitCounts Report ad unit counts violating the Adsense TOS /var/www/html/pikt/samples/date_time_macros.cfg.html: 3 ad units, 4 link units, 1 search boxes [...]
The script follows.
#if piktwebsys AdsenseAdUnitCounts init status =piktstatus level =piktlevel task "Report ad unit counts violating the Adsense TOS" input proc "=find =piktwebdir -name \\*.html -print -exec =egrep -i 'google_ad_format|search|center|form' {} \\;" begin // initializations set $page = "" set #adunits = 0 set #linkunits = 0 set #searchboxes = 0 #ifdef debug set #maxadunits = -1 set #maxlinkunits = -1 set #maxsearchboxes = -1 #elsedef // these may change set #maxadunits = 3 set #maxlinkunits = 3 set #maxsearchboxes = 2 #endifdef rule // new page if $inlin =~ "^=piktwebdir" if $page ne "" if #adunits > #maxadunits || #linkunits > #maxlinkunits || #searchboxes > #maxsearchboxes output mail "$page: $text(#adunits) ad units, $text(#linkunits) link units, $text(#searchboxes) search boxes" endif endif set $page = $inlin #ifdef debug output $page #endifdef set #adunits = 0 set #linkunits = 0 set #searchboxes = 0 next endif rule // ad unit or link unit if $inlin =~ "google_ad_format = $dquote()(.+)$dquote();" set $format = $1 #ifdef debug output $format #endifdef if $format =~ "^.+_as$" set #adunits += 1 elsif $format =~ "^.+ads_al$" set #linkunits += 1 endif next endif rule // search box; determining this is a bit tricky, because // the "<!-- search google -->" marker appears twice in // the search box code, so we count just the last instance, // signified by the previous line being either "</center>" // or "</form>" if $inlin =~~ "<\\!-- (site)?search google -->" && =~ "(</center>|</form>)" set #searchboxes += 1 next endif end // last page if #adunits > #maxadunits || #linkunits > #maxlinkunits || #searchboxes > #maxsearchboxes output mail "$page: $text(#adunits) ad units, $text(#linkunits) link units, $text(#searchboxes) search boxes" endif #endif // piktwebsys
(If it really bothers you to see "1 search boxes" instead of "1 search box", you can modify the script to fix that, of course.)
This is just one program example. You could write new scripts to: check the value of other fields in the Adsense JavaScript code (example); check to see if you have Adsense on the same page as some other conflicting ad program (example); check the validity of any Adsense section targeting tags (example); and so on.
For more examples, see Samples.