RSS Feeds for iOS App Store Updates
This project provides two things:
- a tool to generate RSS/Atom/JSON-Feeds for the version history of given iOS Apps
- a Github Action, which periodically creates new feeds for the apps specified in this repo
Example feed: https://feeds.jonas.lol/apps/duolingo-us.xml
- You can run the tool to generate and publish your own feeds.
- You can use the feeds generated and published by this repo. The currently published feeds can be found here. If an app is missing, feel free to add it to the config and open a PR.
- Check if the values in
config.json
meet your expectations - build a binary, e.g. using
go build -o feedmaker
- run the binary, e.g.
./feedmaker
- find the generated feeds in the folder specified in
config.json
The app needs a configuration file and a storefront mappings file to run. Examples can be found in this repo.
By default, the tool expects these in the same directory as it's being run from, but this can be controlled when ran with the following flags:
-c path/to/my/config.json
-sf path/to/my/storefrontmappings.json
Based on the configuration values, the tool will fetch the version history for each of the apps
listed in the configuration. It will generate RSS, Atom and JSON feeds and write them into the specified outputDir
.
If the summary
configuration is set, a markdown file with published feeds will be generated. This may be useful when combined with a publishing workflow, like the GitHub Actions of this repository.
Configuration Key | Value | |
---|---|---|
feedAuthorEmail |
The feed author, used in Atom and RSS feeds | required |
outputDir |
Where to store the generated feeds. Must exist. | required |
apps |
List of apps to generate feeds for | required |
apps.shortName |
A name for the app, used to name the output files | required |
apps.appstoreId |
The app store identifier of the app, see here for details. | required |
apps.countryId |
The app store to check. App must exist in the country's store to succeed | required |
summary |
Values used to generate a summary markdown file such as this one | optional |
summary.outputPath |
Where to write the summary file to | |
summary.baseURL |
Which base URL to use in the summary file |
To get an app's appstoreId
and countryId
, lookup its App Store URL using your favorite search engine.
As an example, if the URL is https://apps.apple.com/us/app/duolingo-language-lessons/id570060128 we can derive
countryId
: us
appstoreId
: 570060128
I used this StackOverflow answer to get JSON-formatted app version histories and this Gist to map App Store countries to their "storefrontId's".
To generate the feeds, the feeds package is being used.