A design for IPFS version RSS

I like IPFS and RSS. So I’m thinking why not combine IPFS and RSS. That’s why It comes out.
It it called (temporary) IPIS(Interplanetary Information Syndication) and It’s inspired from Atom and RSS.
There is the scheme.

type IPIS struct{
    version Int
    title String
    updated RFC3339
    entities [&Entity] //In IPLD, &Entity is a Link(like CID)

type Entity struct{
    title String
    updated RFC3339
    summary nullable Summary
    author [String]
    content Content

type RFC3339 String

type ValueType enum{
    | Plain ("plain")
    | Html ("html")
type Content struct{
    type ValueType
    value String

type Summary struct{
    type ValueType
    value String

It’s still WIP and welcome for advising.


RSS already works on top of IPFS, isn’t? We need a decentralized feed service. But how achieve this without attaching into a Web 2.0 URL? Even better, how to create this URL on Web 3.0?

In the sense that if an RSS feed is a file, you can put any file into IPFS? Or you mean really that it’s been done before, converting RSS to IPLD somehow?

RSS XML files can be loaded as inert blobs into IPFS. but this misses the point of IPFS and especially IPLD. Ideally, each chunk of content in the feed, along with its key/value pair attributes should be independently addressable and composable.

A place to start would be an IPLD XML codec, so that RSS files could be parsed into IPLDs and mirrored into IPFS, with resolving of any links to enclosures like images or podcasts into IPFS.

1 Like

I’d love to collaborate on this project. @FledgeXu do you have a repo or somewhere that you’re working on this?

I agree there badly needs to be some way to store as text (like YAML, JSON, and/or XML) a file that can contain a hierarchical structure containing at a minimum these properties (shown as JSON here)

   name: "My Favourite little kitty"
   cid: "QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ/cat.jpg"
   mime: "image/jpeg"

This way people can publish data structures to each other, and download their content (technically an index of their content, not the actual content) from pinning services, or upload to pinning services.

If there were a simple standard layout for this kind of file, people could move from one pinning service to another by downloading all their PINs and then sending them to the new service, etc.

One of the big goals also of Social Media 3.0 (Web 3.0) is for people to be able to download all their content, so ultimately also when ActivityPub Objects are stored on the Fediverse as IPFS links it means people can also download their entire social media history as one of these JSON files.

@ecloud I know you’re actively working on Social Media like I am, so you likely agree with this. Maybe there’s already a “file format” under development for this? I don’t know. But people are continually bringing up the need for mime info to be somehow cleanly available at least in some sort of file format.

EDIT: I posted all the above as independent from RSS, but I think perhaps the IPFS version of RSS (if there ever is one) should be hierarchical, rather than “flat” like RSS. RSS is ideal for a single feed that is just a reverse chronological list, but when it comes to actually organizing information, the ability to have a hierarchical structure in the file is critical, and I don’t think RSS can do that. We really don’t need something fancy. A “level 1” compliance would be just what’s shown above: name, cid, mime.



haha, This is the thing that I did in another protocol.

@plantimals Now I’m more interested in another protocol.

And, It’s just an idea. If it inspired you, you can write a new post talk about your idea.

1 Like

I had just posted this link in an “Announcement” thread yesterday on this site:


What I’m going to do today is add an export as “IPFS JSON Links” checkbox on the app so I can not only propose a standard but also show it being used. The file exported will be a JSON Object which represents a tree using an array as “children” under each ‘node’, where each ‘leaf’ on this tree looks like the JSON I showed above. I’ll probably update this thread later today, with a screencast showing the final product in action, and the example generated file.

1 Like