{"id":33223985,"url":"https://github.com/open-risk/atp2rss","last_synced_at":"2025-11-16T15:02:13.062Z","repository":{"id":324234258,"uuid":"1054413040","full_name":"open-risk/atp2rss","owner":"open-risk","description":"Convert ATProto and ActivityPub  subscription lists to RSS","archived":false,"fork":false,"pushed_at":"2025-11-14T14:16:05.000Z","size":328,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-14T16:15:27.712Z","etag":null,"topics":["activitypub","akregator","atproto","bluesky","fediverse","liferea","mastodon","opml","rss","rss-feed","rss-reader"],"latest_commit_sha":null,"homepage":"https://www.openriskmanagement.com","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/open-risk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-10T19:51:38.000Z","updated_at":"2025-11-14T14:16:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/open-risk/atp2rss","commit_stats":null,"previous_names":["open-risk/atp2rss"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/open-risk/atp2rss","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-risk%2Fatp2rss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-risk%2Fatp2rss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-risk%2Fatp2rss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-risk%2Fatp2rss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-risk","download_url":"https://codeload.github.com/open-risk/atp2rss/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-risk%2Fatp2rss/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284725595,"owners_count":27053255,"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","status":"online","status_checked_at":"2025-11-16T02:00:05.974Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["activitypub","akregator","atproto","bluesky","fediverse","liferea","mastodon","opml","rss","rss-feed","rss-reader"],"created_at":"2025-11-16T15:01:55.229Z","updated_at":"2025-11-16T15:02:13.048Z","avatar_url":"https://github.com/open-risk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# atp2rss\n\nA small toolkit to convert AT Protocol (AT) and ActivityPub (AP) subscription lists into RSS feeds in OPML format. \n\n![caffeine](caffeine.png)\n\n## Description\n\nThe toolkit consists of two Python scripts that convert follow lists from Bluesky and Mastodon respectively into OPML files that can be imported into any RSS reader. \n\nThis way you can keep track of posts from accounts that post infrequently and might get lost in the default \"timeline\" interface of these platforms.\n\n![Screenshot](Screenshot.png)\n\n## How to use\n\n* Clone or fork this repository in your computer\n* Export your follow lists from Bluesky and/or the Mastodon instance you have an account on (detailed instructions below)\n* The scripts work independently, generating two separate OPML files.\n* Run **python3 at.py**. This creates the OPML file _bluesky_feeds.opml_ in the data directory. NB: it may take a while as it makes internet queries to resolve the id's\n* Run **python3 ap.py** inside the cloned repo. This creates the OPML file _mastodon_feeds.opml_ in the data directory\n for a long list as it needs to resolve the names of feeds from an online service.\n* Import these two feeds into your favorite reader(s).\n* Done!\n\n\n## Exporting files\n\n### Bluesky\n\nOn the web interface of Bluesky:\n\n* Settings -\u003e Accounts -\u003e Download CAR file\n* This downloads a file named repo.car to the default directory of your browser\n* Move the repo.car file to the atp2rss/data directory\n\n### Mastodon\n\nOn the web interface of your Mastodon instance:\n\n* Settings -\u003e Import and Export -\u003e Follows (CSV)\n* This downloads a file named following_accounts.csv to the default directory of your browser\n* Move the following_accounts.csv file to the atp2rss/data directory\n\n## Dependencies\n\nTo parse the AtProto export (CAR file) we need the atproto library (also needed for resolving did's).\n\n## Troubleshooting\n\n* On bluesky long lists may hit rate limits\n* On mastodon various accounts may actually be federated from instances that do not provide RSS feeds","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-risk%2Fatp2rss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-risk%2Fatp2rss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-risk%2Fatp2rss/lists"}