Frameworks? really? how about a list of positive words, string concatenation, a random number generator, and a hashtable to store the URLs and their short versions, possibly with persistence. Common Lisp hashtables are transparently persisted with Rucksack, Prevalence, BKNR, Elephant, cl-store, etc.
So here is my take on it, 10 minutes!
http://paste.lisp.org/display/78367
P.S. how does one post code in HN?