> The way I'd have done it is
>
> (cl-macrolet (((a field) `(cdr (assq ,field alist))))
> (if (and (a title) (a body))
> (a body)
> (a site)))
>
Indeed, I was doing almost the same thing initially (just using cl-flet instead), but eventually even that grew tiresome.