Skip to content

ClawFeed β€” AI-powered news digest with structured summaries from Twitter/RSS feeds and web dashboard

License

Notifications You must be signed in to change notification settings

morton666/clawfeed

 
 

Repository files navigation

ClawFeed

Stop scrolling. Start knowing.

ClawHub GitHub License: MIT

Live Demo: https://clawfeed.kevinhe.io

AI-powered news digest that curates thousands of sources down to the highlights that matter. Generates structured summaries (4H/daily/weekly/monthly) from Twitter, RSS, and more. Works standalone or as an OpenClaw / Zylos skill.

Dashboard

Features

  • πŸ“° Multi-frequency digests β€” 4-hourly, daily, weekly, monthly summaries
  • πŸ“‘ Sources system β€” Add Twitter feeds, RSS, HackerNews, Reddit, GitHub Trending, and more
  • πŸ“¦ Source Packs β€” Share curated source bundles with the community
  • πŸ“Œ Mark & Deep Dive β€” Bookmark content for AI-powered deep analysis
  • 🎯 Smart curation β€” Configurable rules for content filtering and noise reduction
  • πŸ‘€ Follow/Unfollow suggestions β€” Based on feed quality analysis
  • πŸ“’ Feed output β€” Subscribe to any user's digest via RSS or JSON Feed
  • 🌐 Multi-language β€” English and Chinese UI
  • πŸŒ™ Dark/Light mode β€” Theme toggle with localStorage persistence
  • πŸ–₯️ Web dashboard β€” SPA for browsing and managing digests
  • πŸ’Ύ SQLite storage β€” Fast, portable, zero-config database
  • πŸ” Google OAuth β€” Multi-user support with personal bookmarks and sources

Installation

Option 1: ClawHub (recommended)

clawhub install clawfeed

Option 2: OpenClaw Skill

cd ~/.openclaw/skills/
git clone https://github.com/kevinho/clawfeed.git

OpenClaw auto-detects SKILL.md and loads the skill. The agent can then generate digests via cron, serve the dashboard, and handle bookmark commands.

Option 3: Zylos Skill

cd ~/.zylos/skills/
git clone https://github.com/kevinho/clawfeed.git

Option 4: Standalone

git clone https://github.com/kevinho/clawfeed.git
cd clawfeed
npm install

Quick Start

# 1. Copy and edit environment config
cp .env.example .env
# Edit .env with your settings

# 2. Start the API server
npm start
# β†’ API running on http://127.0.0.1:8767

Environment Variables

Create a .env file in the project root:

Variable Description Required Default
GOOGLE_CLIENT_ID Google OAuth client ID No* -
GOOGLE_CLIENT_SECRET Google OAuth client secret No* -
SESSION_SECRET Session encryption key No* -
API_KEY API key for digest creation No -
DIGEST_PORT Server port No 8767
ALLOWED_ORIGINS Allowed origins for CORS No localhost

*Required for authentication features. Without OAuth, the app runs in read-only mode.

Authentication Setup

To enable Google OAuth login:

  1. Go to Google Cloud Console
  2. Create a new project or select existing one
  3. Enable the Google+ API
  4. Create OAuth 2.0 credentials
  5. Add your domain to authorized origins
  6. Add callback URL: https://yourdomain.com/api/auth/callback
  7. Set credentials in .env

API

All endpoints prefixed with /api/.

Digests

Method Endpoint Description Auth
GET /api/digests List digests ?type=4h&limit=20&offset=0 -
GET /api/digests/:id Get single digest -
POST /api/digests Create digest API Key

Auth

Method Endpoint Description Auth
GET /api/auth/config Auth availability check -
GET /api/auth/google Start OAuth flow -
GET /api/auth/callback OAuth callback -
GET /api/auth/me Current user info Yes
POST /api/auth/logout Logout Yes

Marks (Bookmarks)

Method Endpoint Description Auth
GET /api/marks List bookmarks Yes
POST /api/marks Add bookmark { url, title?, note? } Yes
DELETE /api/marks/:id Remove bookmark Yes

Sources

Method Endpoint Description Auth
GET /api/sources List user's sources Yes
POST /api/sources Create source { name, type, config } Yes
PUT /api/sources/:id Update source Yes
DELETE /api/sources/:id Soft-delete source Yes
GET /api/sources/detect Auto-detect source type from URL Yes

Source Packs

Method Endpoint Description Auth
GET /api/packs Browse public packs -
POST /api/packs Create pack from your sources Yes
POST /api/packs/:id/install Install pack (subscribe to its sources) Yes

Feeds

Method Endpoint Description Auth
GET /feed/:slug User's digest feed (HTML) -
GET /feed/:slug.json JSON Feed format -
GET /feed/:slug.rss RSS format -

Config

Method Endpoint Description Auth
GET /api/changelog Changelog ?lang=zh|en -
GET /api/roadmap Roadmap ?lang=zh|en -

Reverse Proxy

Example Caddy configuration:

handle /digest/api/* {
    uri strip_prefix /digest/api
    reverse_proxy localhost:8767
}
handle_path /digest/* {
    root * /path/to/clawfeed/web
    file_server
}

Customization

  • Curation rules: Edit templates/curation-rules.md to control content filtering
  • Digest format: Edit templates/digest-prompt.md to customize AI output format

Source Types

Type Example Description
twitter_feed @karpathy Twitter/X user feed
twitter_list List URL Twitter list
rss Any RSS/Atom URL RSS feed
hackernews HN Front Page Hacker News
reddit /r/MachineLearning Subreddit
github_trending language=python GitHub trending repos
website Any URL Website scraping
digest_feed ClawFeed user slug Another user's digest
custom_api JSON endpoint Custom API

Development

npm run dev  # Start with --watch for auto-reload

Testing

cd test
./setup.sh    # Create test users
./e2e.sh      # Run 66 E2E tests
./teardown.sh # Clean up

Architecture

See docs/ARCHITECTURE.md for multi-tenant design and scale analysis.

Roadmap

See ROADMAP.md or the in-app roadmap page.

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT License β€” see LICENSE for details.

Copyright 2026 Kevin He

About

ClawFeed β€” AI-powered news digest with structured summaries from Twitter/RSS feeds and web dashboard

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • HTML 60.1%
  • JavaScript 25.5%
  • Shell 14.4%