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))) )))