For the benefit of others who want to import an OPML file generated by FreshRSS: here is the modified import function I use. I just run it from Emacs/Sly. It takes the feed title from the “text” field and skips entries that have no URLs (which FreshRSS uses to grouping).
(define-command import-feeds-from-opml (opml-file)
"Import feeds from a OPML file."
(let* ((parsed-opml-file (plump:parse (uiop:read-file-string opml-file)))
(feed-entries (clss:select "outline" parsed-opml-file)))
(loop for entry across feed-entries
do (let ((title (plump:attribute entry "text"))
(url (plump:attribute entry "xmlUrl")))
(when url
(echo "Adding feed ~a (~a)" title url)
(demeter:add-rss-feed :url url :title title)))
)))