Using Enlive: trying to “change” a tag was giving me a headache: (do -> unwrap (wrap :newtag)) would then wrap any whitespace around the child tags.

Finally bruteforced it by making a new transformation:

(defn replace-tag
  ([tag] (replace-tag tag nil))
  ([tag attrs]
   #(map (fn [node] (array-map :tag tag :attrs attrs :content (:content node))) (html/as-nodes %))))