{"id":13410536,"url":"https://github.com/bcomnes/jsonfeed-to-rss","last_synced_at":"2025-04-06T15:12:42.485Z","repository":{"id":41268479,"uuid":"135372986","full_name":"bcomnes/jsonfeed-to-rss","owner":"bcomnes","description":"📡Convert a jsonfeed to an RSS 2.0 feed with iTunes extensions","archived":false,"fork":false,"pushed_at":"2024-10-09T17:29:27.000Z","size":681,"stargazers_count":39,"open_issues_count":8,"forks_count":12,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-30T13:09:14.217Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://jsonfeed-to-rss.netlify.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bcomnes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["bcomnes"],"custom":["https://bret.io"]}},"created_at":"2018-05-30T01:45:54.000Z","updated_at":"2024-12-21T03:16:58.000Z","dependencies_parsed_at":"2023-02-10T06:15:33.080Z","dependency_job_id":"1ba43fbf-5ace-4c4f-8fb7-d25ba8ba5df2","html_url":"https://github.com/bcomnes/jsonfeed-to-rss","commit_stats":{"total_commits":138,"total_committers":6,"mean_commits":23.0,"dds":0.4782608695652174,"last_synced_commit":"fbc2c4dd62833c18d041d2be3c90fd4d80690393"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fjsonfeed-to-rss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fjsonfeed-to-rss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fjsonfeed-to-rss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bcomnes%2Fjsonfeed-to-rss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bcomnes","download_url":"https://codeload.github.com/bcomnes/jsonfeed-to-rss/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247500469,"owners_count":20948880,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T20:01:07.546Z","updated_at":"2025-04-06T15:12:42.456Z","avatar_url":"https://github.com/bcomnes.png","language":"JavaScript","funding_links":["https://github.com/sponsors/bcomnes","https://bret.io"],"categories":["JavaScript"],"sub_categories":[],"readme":"# jsonfeed-to-rss\n[![npm version][2]][3] [![build status][4]][5]\n[![downloads][8]][9] [![js-standard-style][10]][11]\n\nConvert a JSON feed to an rss feed ([RSS 2.0.11][rss]).  Supports the [@xmlns:itunes][itunes] iTunes RSS extensions and [best practices for podcasts][bp], [xmlns:dc][dc] Dublin Core author names, and the [xmlns:content][content] RDF Site Summary 1.0 Modules: Content encoded content extension.\n\n![JSON feed icon](/reference/icon.png)\n\n## Installation\n```console\n$ npm install jsonfeed-to-rss\n```\n\n## Usage\n\n```js\nconst jsonfeedToRSS = require('jsonfeed-to-rss')\nconst someJSONFeed = require('./load-some-json-feed-data.json')\n\nconst rssFeed = jsonfeedToRSS(someJSONFeed) // Returns an rss 2.0.11 formatted json feed\n```\n\nExample input:\n\n```json\n{\n  \"version\":\"https://jsonfeed.org/version/1\",\n  \"title\":\"bret.io log\",\n  \"home_page_url\":\"https://jsonfeed-to-rss.netlify.com\",\n  \"feed_url\":\"https://jsonfeed-to-rss.netlify.com/snapshots/readme-feed.json\",\n  \"description\": \"A simple summary that describes the podcast.  It can have a few sentences.\\n\\nIf there is more than one paragraph, it gets truncated in some contexts.\",\n  \"next_url\":\"https://jsonfeed-to-rss.netlify.com/snapshots/2017.json\",\n  \"icon\":\"https://jsonfeed-to-rss.netlify.com/icon-512x512.png\",\n  \"author\":{\n     \"name\":\"Bret Comnes\",\n     \"url\":\"https://bret.io\",\n     \"avatar\":\"https://gravatar.com/avatar/8d8b82740cb7ca994449cccd1dfdef5f?size=512\"\n  },\n  \"_itunes\":{\n     \"about\":\"https://github.com/bcomnes/jsonfeed-to-rss#itunes\",\n     \"owner\": {\n       \"email\": \"bcomnes@gmail.com\"\n     },\n     \"image\": \"https://jsonfeed-to-rss.netlify.com/icon-3000x3000.png\",\n     \"category\": \"Sports \u0026 Recreation\",\n     \"subcategory\": \"Outdoor\"\n  },\n  \"items\":[\n     {\n        \"date_published\":\"2018-04-07T20:48:02.000Z\",\n        \"content_html\":\"\u003ch1\u003eCuram ad aut hactenus dentes cedere vigil\u003c/h1\u003e\\n\u003ch2\u003eNon Clitorio vertitur cavatur\u003c/h2\u003e\\n\u003cp\u003eLorem markdownum edendi, non ad clamant solacia septem ambierantque. Scelus te\\nmihi arcum fore nitidam; in dixit de simul.\u003c/p\u003e\",\n        \"url\":\"https://jsonfeed-to-rss.netlify.com/a-url-to-a-post\",\n        \"id\":\"https://jsonfeed-to-rss.netlify.com/a-url-to-a-post-2018-04-07T20:48:02.000Z\",\n        \"image\": \"https://jsonfeed-to-rss.netlify.com/a-url-to-a-post/episode-3000x3000.png\",\n        \"_itunes\": {\n          \"episode\": 12\n        },\n        \"attachments\":[\n           {\n              \"url\":\"https://jsonfeed-to-rss.netlify.com/a-url-to-a-post/attatchment.mp4\",\n              \"mime_type\":\"audio/mpeg\",\n              \"title\":\"Hey this is a podcast episode\",\n              \"duration_in_seconds\":12345,\n              \"size_in_bytes\":1234\n           }\n        ]\n     }\n  ]\n}\n```\n\nExample output:\n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003crss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:itunes=\"http://www.itunes.com/dtds/podcast-1.0.dtd\"\u003e\n  \u003cchannel\u003e\n    \u003catom:link href=\"https://jsonfeed-to-rss.netlify.com/snapshots/readme-feed-rss.xml\" rel=\"self\" type=\"application/rss+xml\"/\u003e\n    \u003ctitle\u003ebret.io log\u003c/title\u003e\n    \u003clink\u003ehttps://jsonfeed-to-rss.netlify.com\u003c/link\u003e\n    \u003cdescription\u003eA simple summary that describes the podcast.  It can have a few sentences.\n\nIf there is more than one paragraph, it gets truncated in some contexts.\u003c/description\u003e\n    \u003clanguage\u003een-us\u003c/language\u003e\n    \u003ccopyright\u003e© 2018 Bret Comnes\u003c/copyright\u003e\n    \u003cpubDate\u003eSat, 07 Apr 2018 20:48:02 GMT\u003c/pubDate\u003e\n    \u003ccategory\u003eSports \u0026amp; Recreation\u003c/category\u003e\n    \u003ccategory\u003eOutdoor\u003c/category\u003e\n    \u003cgenerator\u003ejsonfeed-to-rss 1.1.1 (https://github.com/bcomnes/jsonfeed-to-rss#readme)\u003c/generator\u003e\n    \u003cdocs\u003ehttp://www.rssboard.org/rss-specification\u003c/docs\u003e\n    \u003cimage\u003e\n      \u003curl\u003ehttps://jsonfeed-to-rss.netlify.com/icon-512x512.png\u003c/url\u003e\n      \u003clink\u003ehttps://jsonfeed-to-rss.netlify.com\u003c/link\u003e\n      \u003ctitle\u003ebret.io log\u003c/title\u003e\n    \u003c/image\u003e\n    \u003citunes:author\u003eBret Comnes\u003c/itunes:author\u003e\n    \u003citunes:summary\u003eA simple summary that describes the podcast.  It can have a few sentences.\u003c/itunes:summary\u003e\n    \u003citunes:subtitle\u003eA simple summary that describes the podcast.\u003c/itunes:subtitle\u003e\n    \u003citunes:type\u003eepisodic\u003c/itunes:type\u003e\n    \u003citunes:owner\u003e\n      \u003citunes:name\u003eBret Comnes\u003c/itunes:name\u003e\n      \u003citunes:email\u003ebcomnes@gmail.com\u003c/itunes:email\u003e\n    \u003c/itunes:owner\u003e\n    \u003citunes:image href=\"https://jsonfeed-to-rss.netlify.com/icon-3000x3000.png\"/\u003e\n    \u003citunes:category text=\"Sports \u0026amp; Recreation\"\u003e\n      \u003citunes:category text=\"Outdoor\"/\u003e\n    \u003c/itunes:category\u003e\n    \u003citem\u003e\n      \u003ctitle\u003eCuram ad aut hactenus dentes cedere vigil\u003c/title\u003e\n      \u003clink\u003ehttps://jsonfeed-to-rss.netlify.com/a-url-to-a-post\u003c/link\u003e\n      \u003cdc:creator\u003eBret Comnes\u003c/dc:creator\u003e\n      \u003cdescription\u003eCuram ad aut hactenus dentes cedere vigil\nNon Clitorio vertitur cavatur\nLorem markdownum edendi, non ad clamant solacia septem ambierantque. Scelus te\nmihi arcum fore nitidam; in dixit de simul.\u003c/description\u003e\n      \u003ccontent:encoded\u003e\n        \u003c![CDATA[\u003ch1\u003eCuram ad aut hactenus dentes cedere vigil\u003c/h1\u003e\n\u003ch2\u003eNon Clitorio vertitur cavatur\u003c/h2\u003e\n\u003cp\u003eLorem markdownum edendi, non ad clamant solacia septem ambierantque. Scelus te\nmihi arcum fore nitidam; in dixit de simul.\u003c/p\u003e]]\u003e\n      \u003c/content:encoded\u003e\n      \u003cguid isPermaLink=\"false\"\u003ehttps://jsonfeed-to-rss.netlify.com/a-url-to-a-post-2018-04-07T20:48:02.000Z\u003c/guid\u003e\n      \u003cpubDate\u003eSat, 07 Apr 2018 20:48:02 GMT\u003c/pubDate\u003e\n      \u003cenclosure type=\"audio/mpeg\" url=\"https://jsonfeed-to-rss.netlify.com/a-url-to-a-post/attatchment.mp4\" length=\"1234\"/\u003e\n      \u003citunes:episodeType\u003efull\u003c/itunes:episodeType\u003e\n      \u003citunes:title\u003eCuram ad aut hactenus dentes cedere vigil\u003c/itunes:title\u003e\n      \u003citunes:author\u003eBret Comnes\u003c/itunes:author\u003e\n      \u003citunes:episode\u003e12\u003c/itunes:episode\u003e\n      \u003citunes:subtitle\u003eCuram ad aut hactenus dentes cedere vigil\u003c/itunes:subtitle\u003e\n      \u003citunes:summary\u003eCuram ad aut hactenus dentes cedere vigil\u003c/itunes:summary\u003e\n      \u003citunes:image\u003ehttps://jsonfeed-to-rss.netlify.com/a-url-to-a-post/episode-3000x3000.png\u003c/itunes:image\u003e\n      \u003citunes:duration\u003e3:25:45\u003c/itunes:duration\u003e\n    \u003c/item\u003e\n  \u003c/channel\u003e\n\u003c/rss\u003e\n```\n\n## API\n\n### `jsonfeedToRSS(parsedJsonfeed, opts)`\nCoverts a parsed JSON feed into an RSS feed.  Returns the string of the rss feed.\n\nOpts include:\n\n```js\n{\n  // a function that returns the rss feed url\n  feedURLFn: (feedURL, jf) =\u003e feedURL.replace(/\\.json\\b/, '-rss.xml'),\n  language: 'en-us',\n  copyright: `© ${now.getFullYear()} ${jf.author \u0026\u0026 jf.author.name ? jf.author.name : ''}`,\n  managingEditor,\n  webMaster,\n  idIsPermalink: false, // if guid is the permalink, you can set this true\n  category, // array of categories.. will attempt to use iTunes categories if available\n  ttl,\n  skipHours,\n  skipDays,\n  itunes: !!jf._itunes // generate RSS feed with iTunes extensions\n}\n```\n\n## [Dublin Core Extensions][dc]\n\nThere is only one mapping implemented between jsonfeed and RSS:\n\n### Items\n\n- `item.author.name || jf.author.name` (recommended) maps to `dc:creator`.\n\n## [RDF Site Summary Extensions][content]\n\nThe `content:encoded` field is used to store an `html` representation of content, and RSS's default `description` field is for a plain text representation.\n\n### Items\n\n- `item.content_html` (recommended) maps to a `CDATA` encoded `content:encoded` node.\n- `item.content_text || striptags(item.content_html)` (recommended) maps to an escaped `description` node.  When creating an iTunes feed, description is truncated to 4000 characters.\n\n## [iTunes Extensions][itunes]\n\nIf the `itunes` option is set to `true` (or if the `jsonfeed._itunes` extension object is included in the jsonfeed) the resulting RSS feed will include as many itunes extension tags as possible.  You can override/set `_itunes` extension fields from the `opts.itunes` object.\n\nAll `_itunes.property` map directly to the RSS `itunes:property` extensions, but most have default mappings to standard JSONFeed properties. Its better to rely on the [default JSONFeed fields](https://jsonfeed.org/version/1), but you can override these mappings by including explicit `_itunes` extension properties in your JSONFeed.\n\n- There are a few extension fields that SHOULD be included, but dont map well.  These are marked as (recommended).\n- There are fields that dont have a mapping that are definitely optional but CAN be included. These are marked as (optional).\n- There are fields that have default and acceptable mappings.  These MAY be included but probably not.  These are marked as (mapped).\n\n### Top-level\n\n- `_itunes.owner.email` (recommended) maps to `itunes:owner.itunes:email`.\n- `_itunes.image` (recommended) maps to `itunes:image`.  Defaults to `icon` but the `icon` field does not meet the minimum requirements for this field.  The `icon` field is a 512x512 image, where iTunes recommends Artwork that must be a minimum size of 1400 x 1400 pixels and a maximum size of 3000 x 3000 pixels, in JPEG or PNG format, 72 dpi, with appropriate file extensions (.jpg, .png), and in the RGB colorspace.\n- `_itunes.category` (recommended) maps to `itunes:category`.  Defaults to `opts.category[0]`.  Must be a [valid category][categories].\n- `_itunes.subcategory` (recommended) maps to `itunes:category:itunes:category`.  Defaults to `opts.category[1]`. Must be a [valid subcategory][categories].\n- `_itunes.explicit` (recommended) maps to `itunes:explicit`.  Defaults to unset.\n- `_itunes.type` (optional) maps to `itunes:type`.  Defaults to `episodic` (newest first).  The other option is `serial` (oldest first). [Details][bp].\n- `_itunes.complete` (optional) maps to `itunes:complete`.  Defaults to null.  Tells podcast clients to stop updating this feed ️️️forever. ⚠️\n- `_itunes.block` (optional) maps to `itunes:block`.  Defaults to null.  Prevents the feed from being added to Apple's podcast directory.  Helpful for private or customer specific feeds.\n- `_itunes.new_feed_url` (optional) maps to `itunes:new-feed-url`.  Used for moving feeds from an old url to a new url. See https://podcasters.apple.com/support/837-change-the-rss-feed-url for more details.\n- `_itunes.author` (mapped) maps to `itunes:author`.  Defaults to `author.name`.\n- `_itunes.summary` (mapped) maps to `itunes:summary`.  Defaults to the first paragraph of the generated `description` rss field.\n- `_itunes.subtitle` (mapped) maps to `itunes:subtitle`.  Defaults to the first sentence of the generated `itunes:summary`.\n- `_itunes.owner.name` (mapped) maps to `itunes:owner.itunes:name`.  Defaults to `author.name`.\n\n### Items\n\n- `_itunes.episode` (recommended) maps to `itunes:episode`.  No fallback. Must be an integer \u003e 0.  Its recommended you put episode numbers here, instead of in the title.\n- `_itunes.season` (optional) maps to `itunes:season`.\n- `_itunes.episode_type` (optional) maps to `itunes:episodeType`, but must be one of `full`, `trailer`, or `bonus`.  Defaults to `full`.\n- `_itunes.block` (optional) maps to `itunes:block`.  Defaults to null.  Prevents the item from being added to Apple's podcast directory. \"For example, you might want to block a specific episode if you know that its content would otherwise cause the entire podcast to be removed from Apple Podcasts.\"\n- `_itunes.is_closed_captioned` (optional) maps to `itunes:isClosedCaptioned`.\n- `_itunes.explicit` (optional) maps to `itunes:explicit`.  Defaults to null.\n- `_itunes.title` (mapped) maps to `itunes:title`.  Falls back to `item.title` and then the `generateTitle` function.\n- `_itunes.author` (mapped) maps to `itunes:author`.  Falls back to `author.name || jf._itunes.author || jf.author.name`.\n- `_itunes.subtitle` (mapped) maps to `itunes:subtitle`.  Defaults to the first sentence of the generated `_itunes.summary`.\n- `_itunes.summary` (mapped) maps to `itunes:summary`.  Defaults to the first paragraph of the generated plaintext description of the item.\n- `_itunes.duration` (mapped) maps to `itunes:duration`. Defaults to `attachment.duration_in_seconds` formatted as HH:MM:SS.\n- `_itunes.image` (mapped) maps to `itunes:image`.  Defaults to `image`.  Artwork must be a minimum size of 1400 x 1400 pixels and a maximum size of 3000 x 3000 pixels, in JPEG or PNG format, 72 dpi, with appropriate file extensions (.jpg, .png), and in the RGB colorspace.  JSONFeed has no defined image restrictions on the `image` field, so it can be safely used for this purpose.\n\n## See also\n\n- [JSON Feed: Mapping RSS and Atom to JSON Feed](https://jsonfeed.org/mappingrssandatom)\n- [rssboard.org/rss-specification](http://www.rssboard.org/rss-specification)\n- [Really Simple Syndication Best Practices Profile](http://www.rssboard.org/rss-profile#namespace-elements-content-encoded)\n- [RSS validator.w3.org](https://validator.w3.org/feed/docs/rss2.html)\n- [AtomEnabled: Developers \u003e Syndication](https://web.archive.org/web/20160113103647/http://atomenabled.org/developers/syndication/#link)\n- [Why RSS Content Module is Popular](https://developer.mozilla.org/en-US/docs/Web/RSS/Article/Why_RSS_Content_Module_is_Popular_-_Including_HTML_Contents)\n\n### Related projects\n\n- [bcomnes/jsonfeed-to-atom](https://github.com/bcomnes/jsonfeed-to-atom)\n- [bcomnes/generate-feed](https://github.com/bcomnes/generate-feed)\n\n### More iTunes RSS feed information\n\n- [RSS tags for Podcasts Connect][itunes]\n- [Podcast best practices][bp]\n- [Podcasts Connect categories][categories]\n  - [bcomnes/podcast-categories](https://github.com/bcomnes/podcast-categories)\n- [Apple Create a podcast](https://help.apple.com/itc/podcasts_connect/#/itca5b22233a)\n- [Apple RSS feed sample](https://help.apple.com/itc/podcasts_connect/#/itcbaf351599)\n  - [reference/podcast.xml](reference/podcast.xml)\n- [Apple Requirements - Podcasts Connect Help](https://help.apple.com/itc/podcasts_connect/#/itc1723472cb)\n- [Apple Podcasts - What’s New in iOS 11 - 2017](http://podcasts.apple.com/resources/spec/ApplePodcastsSpecUpdatesiOS11.pdf) ([mirror](reference/ApplePodcastsSpecUpdatesiOS11.pdf))\n- [Apple Podcasts Identity Guidelines](https://www.apple.com/itunes/marketing-on-podcasts/identity-guidelines.html#messaging-and-style)\n- [podbase Podcast Validator](https://podba.se/validate/)\n- [Apple podcasts: Whats new](https://itunespartner.apple.com/podcasts/whats-new/)\n\n### Reference RSS feeds\n\n- [reference/datcast.xml](reference/datcast.xml)\n- [reference/podcast.xml](reference/podcast.xml)\n- [reference/rss-2.0-sample.xml](reference/rss-2.0-sample.xml)\n- [reference/rss20.xml](reference/rss20.xml)\n- [reference/scripting.rss](reference/scripting.rss)\n\n### Snapshots\n\n- [snapshots/podcast-feed.json](snapshots/podcast-feed.json)\n- [snapshots/podcast-feed-rss.xml](snapshots/podcast-feed.xml)\n- [snapshots/podcast-no-itunes-feed-rss.xml](snapshots/podcast-no-itunes-feed.xml)\n- [snapshots/readme-feed.json](snapshots/readme-feed.json)\n- [snapshots/readme-feed-rss.xml](snapshots/readme-feed.xml)\n- [snapshots/extended-feed-rss.xml](snapshots/snapshot.xml)\n- [snapshots/extended-feed.json](snapshots/test-feed.json)\n\n## License\n[MIT](https://tldrlegal.com/license/mit-license)\n\n[0]: https://img.shields.io/badge/stability-experimental-orange.svg?style=flat-square\n[1]: https://nodejs.org/api/documentation.html#documentation_stability_index\n[2]: https://img.shields.io/npm/v/jsonfeed-to-rss.svg?style=flat-square\n[3]: https://npmjs.org/package/jsonfeed-to-rss\n[4]: https://github.com/bcomnes/jsonfeed-to-rss/actions/workflows/test.yml/badge.svg\n[5]: https://github.com/bcomnes/jsonfeed-to-rss/actions/workflows/test.yml\n[8]: http://img.shields.io/npm/dm/jsonfeed-to-rss.svg?style=flat-square\n[9]: https://npmtrends.com/jsonfeed-to-atom\n[10]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square\n[11]: https://github.com/feross/standard\n[12]: https://img.shields.io/coveralls/bcomnes/jsonfeed-to-rss/master.svg?style=flat-square\n[13]: https://coveralls.io/github/bcomnes/jsonfeed-to-rss\n[rss]: http://www.rssboard.org/rss-specification\n[bp]: https://help.apple.com/itc/podcasts_connect/#/itc2b3780e76\n[itunes]: https://help.apple.com/itc/podcasts_connect/#/itcb54353390\n[categories]: https://help.apple.com/itc/podcasts_connect/?lang=en#/itc9267a2f12\n[dc]: http://www.rssboard.org/rss-profile#namespace-elements-dublin-creator\n[content]: http://web.resource.org/rss/1.0/modules/content/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcomnes%2Fjsonfeed-to-rss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbcomnes%2Fjsonfeed-to-rss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbcomnes%2Fjsonfeed-to-rss/lists"}