feedclaw
v0.1.2
Published
RSS/Atom feed reader and AI digest builder CLI
Maintainers
Readme
🦀 Feedclaw
RSS/Atom feed reader and AI digest builder. Fetch feeds, store articles locally, generate AI-powered summaries. Works standalone or as an OpenClaw skill.
What It Does
- keeps your feeds and articles in local SQLite
- ships with curated default feeds (AI, dev, news, OpenClaw ecosystem)
- fetches RSS and Atom feeds with conditional requests (etag / 304)
- generates AI-powered digests via Anthropic or OpenAI
- outputs as terminal, markdown, HTML, or JSON
- imports and exports OPML for feed migration
--jsonflag on most commands for agents and scripts
Requirements
- Node 22+
- pnpm
ANTHROPIC_API_KEYorOPENAI_API_KEYfor digest generation- Windows: Visual Studio Build Tools (C++ workload) for native SQLite compilation
Install
git clone https://github.com/psandis/feedclaw.git
cd feedclaw
pnpm install
pnpm buildQuick Start
After install and build:
pnpm cli init
pnpm cli fetch
pnpm cli digestSet your API key before running digest. See Configuration.
Storage
Default root:
~/.feedclaw/Important paths:
- DB:
~/.feedclaw/feedclaw.db - Config:
~/.feedclaw/config.json
Override the root:
export FEEDCLAW_HOME=/path/to/custom/rootCLI
All commands are run with pnpm cli <command>.
Set up default feeds
pnpm cli init
✓ MIT Technology Review
✓ OpenAI Blog
✓ Google AI Blog
✓ Hugging Face Blog
✓ Simon Willison
✓ Lil'Log (Lilian Weng)
✓ GitHub Blog
✓ Cloudflare Blog
✓ Stripe Engineering
✓ Meta Engineering
✓ Peter Steinberger (steipete)
✓ OpenClaw Newsletter
✓ Hacker News
✓ Techmeme
✓ Ars Technica
✓ The Verge
16 feeds added. Run fetch to pull articles.Notes:
--bundle ai|dev|openclaw|news|allpicks a subset (default:all)--from my-feeds.jsonloads feeds from a custom JSON file- default feeds live in
feeds/default.json— edit the file or submit a PR
Add and remove feeds
pnpm cli add https://blog.rust-lang.org/feed.xml --category dev
pnpm cli remove 3
pnpm cli remove https://example.com/feed.xmlNotes:
--category <cat>sets the feed category (default:default)- remove accepts a feed ID or URL
List subscribed feeds
pnpm cli list
[ai]
1 MIT Technology Review · fetched 2026-03-20 17:30:12
https://www.technologyreview.com/feed/
2 OpenAI News · fetched 2026-03-20 17:30:13
https://openai.com/blog/rss.xml
5 Simon Willison's Weblog · fetched 2026-03-20 17:30:12
https://simonwillison.net/atom/everything/
[dev]
7 The GitHub Blog · fetched 2026-03-20 17:30:12
https://github.blog/feed/
[openclaw]
11 Peter Steinberger · fetched 2026-03-20 17:30:12
https://steipete.me/rss.xmlNotes:
- titles are populated after first fetch
--category <cat>filters by category
Fetch new articles
pnpm cli fetch
✓ MIT Technology Review: 10 new
✓ OpenAI News: 891 new
✓ Simon Willison's Weblog: 30 new
✓ The GitHub Blog: 10 new
✓ The Cloudflare Blog: 20 new
✓ Hacker News: Front Page: 20 new
✓ Peter Steinberger: 107 new
✓ Openclaw Newsletter: 30 newNotes:
--feed <id|url>fetches a single feed- uses etag and last-modified headers to skip unchanged feeds
Generate AI digest
pnpm cli digest --since 24h --category ai --format terminalNotes:
--since <duration>sets the time window:24h,7d,2w(default:24h)--category <cat>filters by category--provider anthropic|openaipicks the AI provider (default:anthropic)--model <model>overrides the model--format terminal|markdown|html|jsonsets the output format--max-articles <n>limits articles included (default:50)- only includes unread articles; marks them as read after generating
Import and export OPML
pnpm cli opml-import feeds.opml
pnpm cli opml-export > feeds.opmlTypical Workflow
- run
initto load default feeds orinit --fromwith your own list - run
fetchto pull articles - run
digestto get an AI summary - add or remove feeds as needed
- run
fetchanddigeston a schedule
Configuration
Optional config file at ~/.feedclaw/config.json:
{
"defaultProvider": "anthropic",
"defaultModel": "claude-sonnet-4-20250514",
"defaultFormat": "terminal",
"digestSince": "24h"
}Environment variables:
| Variable | Description |
|----------|-------------|
| ANTHROPIC_API_KEY | Anthropic API key for digest generation |
| OPENAI_API_KEY | OpenAI API key for digest generation |
| FEEDCLAW_HOME | Custom data directory (default: ~/.feedclaw/) |
# macOS / Linux
export ANTHROPIC_API_KEY=sk-ant-...
# Windows (cmd)
set ANTHROPIC_API_KEY=sk-ant-...
# Windows (PowerShell)
$env:ANTHROPIC_API_KEY="sk-ant-..."Agent Integration
Most commands support --json for structured output (except opml-export which outputs OPML directly):
pnpm cli --json list
pnpm cli --json fetch
pnpm cli --json digest --format jsonOpenClaw Skill
Once installed globally (npm install -g feedclaw), add a SKILL.md to your workspace:
---
name: feedclaw
description: Fetch RSS feeds and generate AI news digests
version: 1.0.0
requires_binaries:
- feedclaw
---
When the user asks about news, feeds, or digests, use the `feedclaw` CLI:
- To check feeds: `feedclaw --json fetch`
- To get a digest: `feedclaw --json digest --format markdown`
- To add a feed: `feedclaw --json add <url>`Default Feeds
Default feeds live in feeds/default.json. Edit the file or submit a PR to add feeds.
| Bundle | Feeds |
|--------|-------|
| ai | MIT Technology Review, OpenAI, Google AI, Hugging Face, Simon Willison, Lil'Log |
| dev | GitHub Blog, Cloudflare, Stripe Engineering, Meta Engineering |
| openclaw | Peter Steinberger (steipete), OpenClaw Newsletter |
| news | Hacker News, Techmeme, Ars Technica, The Verge |
Development
git clone https://github.com/psandis/feedclaw.git
cd feedclaw
pnpm install
pnpm build
pnpm test
pnpm lint
pnpm cli --helpTesting
pnpm testCurrent bar:
- 28 tests across feeds, fetcher, and digest modules
- temp SQLite databases per test, cleaned up automatically
Related
- 🦀 Dustclaw — Find out what is eating your disk space
- 🦀 Driftclaw — Deployment drift detection across environments
- 🦀 OpenClaw — The open claw ecosystem
License
See MIT
