Crawl content from RSS feeds into multiple formats https://crates.io/crates/rssto
Find a file
2025-06-14 04:21:28 +03:00
src initial commit 2025-06-14 04:20:32 +03:00
template/html initial commit 2025-06-14 04:20:32 +03:00
.gitignore initial commit 2025-06-14 04:20:32 +03:00
Cargo.toml require chrono ^0.4.20 2025-06-14 04:21:28 +03:00
LICENSE Initial commit 2025-06-14 04:14:54 +03:00
README.md initial commit 2025-06-14 04:20:32 +03:00

rssto

Build Dependencies crates.io

Aggregate RSS feeds into different formats

A simple multi-source feed aggregator that outputs static files in multiple formats.

Roadmap

  • HTML
  • Markdown
  • Gemtext

Install

cargo install rssto

Launch

rssto --source https://path/to/source1.rss\
      --target /path/to/source1dir\
      --source https://path/to/source2.rss\
      --target /path/to/source2dir\
      --format html

Options

-d, --debug <DEBUG>              Show output (`d` - debug, `e` - error, `i` - info) [default: ei]
-f, --format <FORMAT>            Export formats (`html`,`md`,etc.) [default: html]
-l, --limit <LIMIT>              Limit channel items (unlimited by default)
-s, --source <SOURCE>            RSS feed URL(s)
    --target <TARGET>            Destination directory
    --template <TEMPLATE>        Path to template directory [default: template]
    --time-format <TIME_FORMAT>  Use custom time format [default: "%Y/%m/%d %H:%M:%S %z"]
-u, --update <UPDATE>            Update timeout in seconds [default: 60]
-h, --help                       Print help
-V, --version                    Print version

Autostart

systemd

  1. Install rssto by copy the binary compiled into the native system apps destination:
  • Linux: sudo cp /home/user/.cargo/bin/rssto /usr/local/bin
  1. Create systemd configuration file:
# /etc/systemd/system/rssto.service

[Unit]
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=rssto
Group=rssto
ExecStart=/usr/local/bin/rssto  --source https://path/to/source1.rss\
                                --target /path/to/source1dir\
                                --source https://path/to/source2.rss\
                                --target /path/to/source2dir\
                                --format html
                                --time-format %%Y/%%m/%%d %%H:%%M:%%S

[Install]
WantedBy=multi-user.target
  • on format time, make sure % is escaped to %%
  1. Run in priority:
  • systemctl daemon-reload - reload systemd configuration
  • systemctl enable rssto - enable new service
  • systemctl start rssto - start the process
  • systemctl status rssto - check process launched