2025-02-07 16:50:23 +03:00
2025-02-07 13:18:42 +03:00
2025-02-14 12:40:53 +03:00
2025-02-15 11:05:04 +03:00
2025-02-09 10:47:25 +03:00
2025-01-27 18:28:07 +03:00
2025-01-27 18:28:07 +03:00
2025-01-27 19:21:54 +03:00
2025-02-16 21:24:10 +03:00
2025-02-16 21:24:10 +03:00

RSS Alchemy

About

RSS Alchemy is a website-to-rss converter, like RSSHub, RSS-bridge or Rss.app. Here is the difference:

  • Convert arbitrary website to RSS feed using CSS selectors
  • Dynamic websites are supported using headless chrome (playwright)
  • Cookies1 (supports scraping private feeds, eg youtube subscriptions)
  • Proxy
  • Results caching
  • Screenshots (primarily for debugging)
  • Stateless2 (all task parameters are encoded into url, no database needed)
  • Distruibuted by design (deploy as many workers as you need)
  • Self-hosted; easy to deploy; docker-compose provided
  • Relatively small codebase, written in go + typescript
feature/program RSS Alchemy RSS Hub RSS-Bridge RSS.app
Custom websites (using CSS selectors) (only hardcoded site list) (using CSS selectors)
Render dynamic sites (using headless chrome)
Hosting Self-hosting Self-hosting Self-hosting Only cloud
Price Free and open-source Free and open-source Free and open-source Paid ($8/mon)

Project status

Program is still under development. The code architecture is not final, tests are missing, no CI, no demo page, no docs, etc...

Deployment

git clone https://github.com/egor3f/rssalchemy
cd rssalchemy/deploy
docker-compose up -d

Then open your browser targeting to port 8080.

For SSL, authentication, domains, etc. - use Caddy or Nginx (no specific configuration required). Personally I recommend Caddy, if you haven't used it before - give it a try :)

Configuration

Configuration is done using environment variables

You can see all available options in config.go file (struct Config)

Docker-compose deployment uses deploy/.env file

Scaling

Each worker can process 1 page at a time, so to scale you should run multiple worker instances. This is done using replicas parameter in worker section in docker-compose.yml file

Development

You need Go 1.23 (most of application), Node.js 20 (frontend) and Nats server.

Instaling dependencies example for MacOS:

brew install go@1.23
brew install node@20
brew install nats-server  # Don't use brew services to manage nats because it lacks config support
go mod download
cd frontend/wizard-vue && npm install
nats -js

Also this repository contains some useful git hooks. To enable them, use:

git config --local core.hooksPath .githooks/

  1. Cookies require support from your RSS reader/aggregator. Miniflux works, others are not checked yet. ↩︎

  2. Nats KV is used to store cookies permanently, it's required for sites that update cookies on every request, like youtube ↩︎

Description
No description provided
Readme AGPL-3.0 3.3 MiB
Languages
Go 60.3%
TypeScript 25.3%
Vue 11.2%
JavaScript 1.8%
Makefile 0.9%
Other 0.4%