---
name: rss_news_digest
description: Fetch ranked RSS digests by tag; list, search, add, edit, import, export, disable, enable, or remove feeds; and run feed health checks.
user-invocable: true
metadata: {:{:{:[,]}}}
---

# RSS News Digest

Use this skill when the user asks for RSS-based research updates, jobs, events, general news, or feed health diagnostics.

## Installed files

- Feeds config: `{{ HOME }}/.openclaw/workspace/research/rss/feeds.tsv`
- Profiles config: `{{ HOME }}/.openclaw/workspace/research/rss/profiles.json`
- State file: `{{ HOME }}/.openclaw/workspace/research/rss/state.json`
- Digest directory: `{{ HOME }}/.openclaw/workspace/research/rss/digests`
- Feed backup dir: `{{ HOME }}/.openclaw/workspace/research/rss/backups`

## Main commands

Default research digest:

```bash
python3 "{baseDir}/rss_news_digest.py" run --tag research
```

All tags:

```bash
python3 "{baseDir}/rss_news_digest.py" run --all-tags
```

Doctor / feed health:

```bash
python3 "{baseDir}/rss_news_digest.py" doctor
```

List feeds:

```bash
python3 "{baseDir}/rss_news_digest.py" list-feeds
```

Search feeds:

```bash
python3 "{baseDir}/rss_news_digest.py" search-feeds "arxiv"
```

Add a feed:

```bash
python3 "{baseDir}/rss_news_digest.py" add-feed "<URL>" --tag research --priority 9
```

Disable a feed:

```bash
python3 "{baseDir}/rss_news_digest.py" disable-feed "<URL>"
```

Enable a feed again:

```bash
python3 "{baseDir}/rss_news_digest.py" enable-feed "<URL>"
```

Edit a feed in place:

```bash
python3 "{baseDir}/rss_news_digest.py" edit-feed "<URL>" --priority 10 --tag research --notes "high signal"
```

Remove a feed permanently:

```bash
python3 "{baseDir}/rss_news_digest.py" remove-feed "<URL>"
```

Create a manual backup:

```bash
python3 "{baseDir}/rss_news_digest.py" backup-feeds --reason before-bulk-edit
```

List available backups:

```bash
python3 "{baseDir}/rss_news_digest.py" list-backups
```

Restore the newest backup:

```bash
python3 "{baseDir}/rss_news_digest.py" restore-feeds-backup
```

Restore a named backup:

```bash
python3 "{baseDir}/rss_news_digest.py" restore-feeds-backup feeds-20260309T010203Z-import-merge.tsv
```

Export feeds.tsv for bulk editing:

```bash
python3 "{baseDir}/rss_news_digest.py" export-feeds-tsv --output /tmp/feeds.tsv
```

Import a bulk-edited feeds.tsv by merge:

```bash
python3 "{baseDir}/rss_news_digest.py" import-feeds-tsv /tmp/feeds.tsv
```

Replace the current feeds.tsv entirely:

```bash
python3 "{baseDir}/rss_news_digest.py" import-feeds-tsv /tmp/feeds.tsv --replace
```

## Notes

- The default digest focuses on `research`.
- Video feeds are separated under the `video` tag.
- Feed edits are written atomically so add/search/edit/import/export/disable/enable/remove operations from chat are safer.
- Feed-changing operations create automatic backups under `{{ HOME }}/.openclaw/workspace/research/rss/backups`, and you can also create/list/restore backups manually.
- If a legacy flat `feeds.txt` exists, the runtime can migrate it into `feeds.tsv` automatically.
- Digest files are written under `{{ HOME }}/.openclaw/workspace/research/rss/digests`.
