Can "proxy"/mirror any RSS Feed to fetch full-text Content. Allows integration into any feed reader, without plugins or further configuration required.
- Download and modify the docker-compose.yml file to your liking.
- Run
docker-compose up -d
- Clone the repository:
git clone https://github.com/Kombustor/rss-fulltext-proxy.git
- Change working path:
cd rss-fulltext-proxy
- Install dependencies:
npm install
- Compile:
npm run build
- Run:
node dist/server.js
Note: You have to set the environment variables described in Configuration yourself, and you have to start a local redis server.
The application is easily configurable with environment variables.
Name | Type | Default | Description |
---|---|---|---|
PORT | number | 3000 | The port the webserver listens on. |
REDIS_URL | string | redis://127.0.0.1 | The redis connection URL for caching. |
CACHE_EXPIRY_SECONDS | number | 900 | The number of seconds for cache entries to expire. |
We have to define two query parameters:
Identifier | Description |
---|---|
feed | The original feed URL to proxy. |
selectors | URL-encoded string[] of CSS-selectors. |
- Feed URL:
http://rss.sueddeutsche.de/rss/Topthemen
- Query Selectors of relevant HTML elements:
["figure.asset-image", "section.body > p, section.body > h3"]
- URL-encoded selectors using this website:
%5B%22figure.asset-image%22%2C%20%22section.body%20%3E%20p%2C%20section.body%20%3E%20h3%22%5D
- The URL we are adding to our feed reader is:
http://host:post/?feed=http://rss.sueddeutsche.de/rss/Topthemen&selectors=%5B%22figure.asset-image%22%2C%20%22section.body%20%3E%20p%2C%20section.body%20%3E%20h3%22%5D
- We are getting full-text RSS content for this feed. 🔥
A collection of selectors can be found on the wiki page. If you create or improve a selector, feel free to open a pull request to add it to the wiki page.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
- Make redis optional.
- Add common templates for easier usage.
- Unit tests.
- Linting.
- Add option to clear cache.
- Tutorial on how to choose selectors.
- Webinterface to visually select elements that should be included/removed.
- Support websites which don't provide a RSS feed.