Gotowych skryptów do tego nie znam (w sensie takich, z których można by skorzystać) ale długo nie szukałem więc kto wie

Ja bym kombinował tak:
// tablica slow
var words = [];
words.push(['asdasdasd','zastepstwo1']);
words.push(['cztery','zastepstwo2']);
// pobieram wszystkie elementy
var elements = document.body.getElementsByTagName('*');
for(var i = 0; i < elements.length; i++) {
var e = elements[i];
switch(e.tagName) {
case 'a':
case 'button':
case 'script':
case 'style':
break; // w tym miejscu odrzucamy w ogóle sprawdzanie tagów wymienionych wyżej
default:
for(var j = 0; j < e.childNodes.length; j++) { // dla wszystkich węzłów w elemencie
if(e.childNodes[j].nodeType != 3) continue; // pomijamy jeśli nie jest to węzeł tekstowy
var textContent = e.childNodes[j].textContent;
for(index in words) {
textContent = textContent.replace(words[index][0],words[index][1]);
}
if(e.childNodes[j].textContent != textContent)
e.childNodes[j].textContent = textContent;
}
break;
}
}
EDIT: kilka uwag:
1. Ten skrypt będzie działał, dość szybko itd. (nawet sprawdziłem)
2. Należało by dać odpowiedni regexp zamiast prostej zamiany (żeby dopasować do potrzeb)
3. wszystko będzie ok do momentu gdy na liście słów nie pojawią się dwa słowa, z których jedno zawiera sięw drugim:
np.: zaraz i raz - najpierw zamieni słowo "zaraz" np na <a ...>zaraz</a> a potem jeszcze zamieni "raz" i wyjdzie <a ...>za<a ...>raz</a></a> co jest głupotą - wystarczy jednak przygotować listę słów tak by było od najkrótszego do najdłuższego i dopasować wyrażenie regularne tak by zamieniało tylko słowa które mają z tyłu i sprzodu spację lub koniec/początek ciągu.
mam nadzieję, że Ci to nieco pomoże

EDIT2: acha i to się nie nadaje do zamiany z tekstu na HTML - więc trzeba nieco inaczej pokombinować :/