go-morss
is a lightweight server for enriching RSS/Atom/JSON feeds by adding full content to each
feed item. It fetches the content from item links, parses it for readability, and repackages the
feed with the full content included. This makes it easier to consume feeds in a reader or automate
content processing.
- Fetches full content for feed items using readability parsing (inspired by Readability.js by Mozilla).
- Supports RSS, Atom, and JSON feed formats.
- Filters items by a configurable time window and limits the number of items per feed to reduce the load.
- Easy-to-use HTTP API for on-the-fly feed enrichment.
-
Clone the repository:
git clone https://github.com/traut/go-morss.git
-
Build the binary:
cd go-morss go build
Run the server with default options:
./go-morss
Available flags:
-
--ip
: The IP address to listen on (default:0.0.0.0
). -
--port
: The port to listen on (default:8080
). -
--items-cap
: Maximum number of items to process per feed (default:10
).
Example:
./go-morss --port 9090 --items-cap 20
To use the API, append the feed URL (without schema) to the root endpoint:
https://<server-address>/<feed-url-without-schema>
Example:
http://localhost:8080/news.ycombinator.com/rss
- Assumes
https://
as the default schema for feed URLs. - The enriched feed retains the original format (RSS, Atom, or JSON).
-
from_time
: Only include items published/updated after this time (ISO8601 format). -
items_cap
: Override the server's item cap for the request.
Example:
http://localhost:8080/news.ycombinator.com/rss?from_time=2023-01-01T00:00:00Z&items_cap=5
To run the project locally during development:
go run morss.go
-
charmbracelet/log
for beautiful logs. -
mmcdole/gofeed
for parsing feeds. -
go-shiori/go-readability
for extracting readable content. -
gorilla/feeds
for feed generation.
Contributions are welcome! Feel free to open issues or submit pull requests to improve the project.
This project is licensed under the MIT License.
Enjoy! 🚀