English | 中文
A Deno-based service that periodically fetches RSS feeds and forwards them to Rote via the OpenKey interface.
- RSS/Atom Support: Fetches content from standard feeds.
- Deduplication: Uses DenoKV to prevent sending duplicate items.
- Configurable: Manage feeds and API credentials via
config.yaml. - Cron Scheduling: Built-in scheduler to run tasks periodically.
RoteFeeder supports two configuration methods:
Supports configuration using Docker Compose environment variables. Here are the available environment variables:
| Environment Variable | Description | Default Value |
|---|---|---|
| ROTE_API_BASE | Rote API Base URL | - |
| ROTE_OPENKEY | Rote OpenKey | - |
| ROTE_STATE | Note state ("public" or "private") | "public" |
| ROTE_APPEND_SOURCE_TAG | Whether to append source tag | true |
| ROTE_DEFAULT_TAGS | Default tags (JSON array) | ["RoteFeeder", "RSS"] |
| ROTE_FEEDS | Feed list (JSON array) | - |
| ROTE_CRON | Scheduled task expression (Cron) | - |
Optimized Configuration: Now supports using YAML native syntax for arrays and objects, avoiding JSON string escaping issues, making configuration more elegant and readable.
Example (Docker Compose - YAML Native Syntax):
services:
rote-feeder:
image: ghcr.io/rabithua/rotefeeder:latest
user: "0:0"
environment:
ROTE_API_BASE: "https://api.rote.ink"
ROTE_OPENKEY: "your_openkey_here"
ROTE_STATE: "public"
ROTE_APPEND_SOURCE_TAG: "true"
# Using YAML native list syntax
ROTE_DEFAULT_TAGS: >-
- RoteFeeder
- RSS
# Using YAML native array and object syntax
ROTE_FEEDS: >-
- name: "Hacker News"
url: "https://hnrss.org/newest?points=100"
- name: "Design Fragments"
url: "https://df.fenx.work/rss/all"
- name: "Fatbobman's Blog"
url: "https://fatbobman.com/rss.xml"
- name: "月球背面"
url: "https://moonvy.com/blog/rss.xml"
ROTE_CRON: "*/10 * * * *"
volumes:
- denokv:/app/denokv
restart: unless-stopped
volumes:
denokv:Copy config.example.yaml to config.yaml and edit it.
rote:
api_base: "https://api.rote.ink"
openkey: "your_openkey_here"
state: "public" # Optional: "public" or "private" (default: public)
feeds:
- name: "Hacker News"
url: "https://hnrss.org/newest"deno task startdeno task dev-
Configure: Ensure
config.yamlis present in the project root with your desired configuration. The database is persisted in a Docker named volumedenokvby default. Compose runs the container as root (user: "0:0") soDeno.openKv("./denokv/dedupe.db")can always initialize on fresh volumes. If you removeuser: "0:0"and run asdenouser, ensure the host directory is writable by container user1000:1000. -
Run with Docker Compose:
The
docker-compose.ymlis configured to pull the latest image from GitHub Container Registry.docker compose up -d
To rebuild and run locally:
docker compose -f docker-compose.build.yml up -d --build
To view logs:
docker compose logs -f
To stop the service:
docker compose down