Show HN: Online OPML editor to manage subscription lists

github.com

85 points by imadj 7 days ago

I made a small online editor to manage OPML[1] files easily. There are a lot of smart online editors for formats like JSON, but while OPML is supported by most subscriptions services, the experience of editing/managing it is poor outside of what each platform support. The pain of managing the file independently increases as the size of the OPML file grow larger.

It's rather simple at the moment but the goal is to provide shortcuts for common desired tasks to make the experience of editing OPML much smoother and streamlined.

The editor is a static website that runs locally in your browser, it doesn't require an account, nor do any tracking.

Let me know your feedback or if you've any pain points around OPML

GitHub repo: https://github.com/imdj/opml-editor

Website: https://opml.imadij.com/

[1] - https://en.wikipedia.org/wiki/OPML

NoboruWataya 4 days ago

Looks cool, I have often thought that this was something that is lacking. Not sure if I've missed it but I think there should be a way to add a outlines while in outliner mode. Like, you can click to add a category or feed and you get a simple dialog asking you for the key information (like title, URL, category name).

  • imadj 4 days ago

    > a way to add a outlines while in outliner mode

    I'm already working on it. This, along with ability to re-arrange outlines are the next step.

    I love this comment. Please let me know if you find more missing features.

jellyfish24 4 days ago

wish the website had a placeholder example :-)

  • imadj 4 days ago

    Similar to the minimal new file but populated with couple feeds inside to play around and test?

    Currently there's an example in the /about page. But I like your suggestion, will try to add it as an option in the editor.

1317 3 days ago

It just looks like a text editor with syntax highlighting, am I missing something?

I was expecting some interface that abstracted it all into buttons and fields to fill in, etc

  • imadj 3 days ago

    > looks like a text editor with syntax highlighting, am I missing something?

    The text editor is just a view, you can completely ignore it if you don't need it. The action is actually in the toolbar, where you have stuff like:

    - Remove any duplicate feeds

    - Merge multiple files together

    These two use cases were the motivation behind making the website.

    And like I mentioned in the post, there are more features planned particularly to the outliner view to add and rearrange feeds(outlines) more easily.

    If you have a use case or a desired functionality that's missing beyond the above I'd love to hear more about it

cxr 5 days ago

Basic OPML is pretty well-supported, but text/uri-list is a better format for the most common use of OPML (a collection of RSS/Atom feeds). It's a little funny seeing projects pull in full-blown XML parsers just to not really handle anything besides URL/name pairs. (E.g [1].)

If you have a project where the ability to import/export OPML is on the roadmap but you haven't added it yet, consider taking a few minutes to implement text/uri-list first.

1. <https://github.com/Automattic/pocket-casts-android/blob/864d...>

  • imadj 5 days ago

    > but text/uri-list is a better format for the most common use of OPML (a collection of RSS/Atom feeds)

    text/uri-list seems like joy to use technically, but in practice simple formats have tendency to evolve into frankenstein monster with a mess of extensions and variations (see markdown for example) where every vendor will extend the format to support something for their platform.

    Users expect to maintain their feed structure for example when moving to a new platform just like a file system hierarchy, which text/uri-list doesn't seem to support right off the bat

    • cxr 3 days ago

      > in practice simple formats have tendency to evolve into frankenstein monster with a mess of extensions and variations (see markdown for example)

      Compare to OPML, which is supposed to support other things—exactly the type of things you describe—but it requires special handling in the implementation to actually do it, so you get implementations that don't, which isn't far off from the exact situation of variants that you describe. See the previous OPML importer that I linked to for an example.