AI-Powered Global Information Aggregation Platform
Smart fetching, filtering, and aggregation — never miss what matters
Live Preview* • Quick Start • Features • Desktop Widget • Tech Docs • User Guide • 中文
* Online preview is a simplified read-only demo. For full features (AI chat, settings, auto-fetch, desktop widget), please clone and run locally.
AI Hub automatically aggregates content from 77+ premium global sources across multiple domains — AI technology, academic papers, international affairs, and more. It features a modern WebUI and a native macOS desktop widget, both powered by the same data engine and sharing a unified database.
Two ways to use:
- WebUI — Full-featured web interface with search, filtering, favorites, settings, AI chat
- Desktop Widget — Lightweight floating widget with real-time notifications, favorites, and AI assistant
Both share the same database and configuration — favorites, read status, and sources stay in sync.
- 77+ curated data sources — OpenAI, DeepMind, TechCrunch, BBC, Financial Times, arXiv, and more
- Smart filtering — AI-relevance detection, 7-day freshness window, duplicate prevention
- Parallel fetching — All sources fetched concurrently with 30s deadline, completes in ~8 seconds
- Configurable auto-fetch — Set any interval (1min to hours), runs in background
Dark-themed dashboard with stats overview, latest news, recent papers, and featured AI products.
Real-time AI news from top sources with source-type filtering (Twitter, WeChat, RSS) and search.
Track cutting-edge research papers from arXiv (cs.AI, cs.LG, cs.CL, cs.CV) with direct links to papers and PDFs.
International affairs coverage from BBC, Financial Times, NYT, Reuters, Guardian, and more — with source filtering.
Browse 59+ AI companies across 9 categories with direct links to official sites, APIs, and documentation.
Unified favorites system shared between WebUI and Desktop Widget — save and manage your bookmarks.
Comprehensive settings panel with 5 tabs:
| Tab | Description |
|---|---|
| Data Fetching | One-click fetch, auto-fetch interval, recent fetch history |
| Module Management | Create/edit content modules (AI News, Papers, World News, etc.) |
| Data Sources | Manage 77+ RSS sources, assign to modules |
| Product Management | CRUD for AI products directory |
| LLM Configuration | Quick-select presets (OpenAI, Anthropic, DeepSeek, GLM, etc.) |
A native floating widget that lives on your desktop — always accessible, never in the way.
Expanded Card List
Read status, favorites, source filtering, dismiss cards |
Full Desktop View
Widget + AI Chat + Settings side by side |
Widget Features:
- Floating logo with particle effects — click to expand
- Source-type filter tabs (All, Twitter, WeChat, RSS, World)
- Read tracking (persisted across restarts)
- Favorites (synced with WebUI)
- Dismiss individual cards or clear all
- AI Chat assistant with streaming responses
- Settings panel with LLM configuration
- Drag to reposition, resize by dragging bottom edge
| Requirement | Version | Purpose |
|---|---|---|
| Node.js | 18+ (recommend 20+) | WebUI + data fetching engine |
| npm | 9+ | Package management |
| Docker | (Optional) | WeChat sources via WeWe RSS |
| Rust | (Optional) | Build desktop widget from source |
git clone https://github.com/LearningByDoingNow/ai-hub.git
cd ai-hub
npm installnpm run start:allThis single command automatically:
- Starts WeWe RSS Docker container (if Docker is installed, for WeChat sources)
- Fetches data from all 77+ sources (first run)
- Starts the WebUI at http://localhost:3000
- Starts the WeWe watcher (auto-fetches when WeChat has new content)
╔══════════════════════════════════════╗
║ AI Hub — Starting Up ║
╚══════════════════════════════════════╝
[WeWe] Started (port 4000, scan every 10min)
[Watch] Starting WeWe watcher (auto-fetch on update)
[WebUI] Starting at http://localhost:3000
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ AI Hub is running!
WebUI: http://localhost:3000
WeWe RSS: http://localhost:4000
Watcher: Auto-fetch on WeChat updates
Press Ctrl+C to stop
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
No Docker? No problem. The script auto-detects — without Docker, WeChat sources are skipped but all other 60+ sources (RSS, arXiv, etc.) work perfectly.
cp .env.example .env.localEdit .env.local:
LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4 # Or any OpenAI-compatible endpoint
LLM_API_KEY=your_api_key_here
LLM_MODEL=glm-4.5-air # Model name
LLM_TEMPERATURE=0.5Or configure directly in WebUI: Settings → LLM Configuration (with quick-select presets).
Open http://localhost:3000 — you'll see all aggregated content immediately.
cp .env.example .env.localEdit .env.local:
LLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4 # Or any OpenAI-compatible endpoint
LLM_API_KEY=your_api_key_here
LLM_MODEL=glm-4.5-air # Model name
LLM_TEMPERATURE=0.5Supported providers: OpenAI, Anthropic, DeepSeek, GLM (智谱), Together AI, Groq, SiliconFlow, Ollama (local), etc.
You can also configure LLM directly in the WebUI: Settings → LLM Configuration (with quick-select presets).
| Command | Description |
|---|---|
npm run fetch:all |
One-shot: fetch news + papers from all sources (~8s) |
npm run fetch |
One-shot: fetch news only |
npm run fetch:papers |
One-shot: fetch arXiv papers only |
npm run fetch:schedule |
Loop: auto-fetch every 4 hours (runs in foreground) |
| Command | Description |
|---|---|
npm run dev |
Start dev server with hot-reload (http://localhost:3000) |
npm run build |
Production build |
npm run start |
Start production server |
| Command | Description |
|---|---|
npm run desktop:install |
Install desktop dependencies |
npm run desktop:dev |
Start desktop widget in dev mode (hot-reload) |
npm run desktop:build |
Build .app and .dmg for distribution |
Open 4 terminals for the complete experience:
# Terminal 1: Start WeWe RSS (if using WeChat sources)
docker start wewe-rss
# Terminal 2: Start WebUI
npm run dev
# Terminal 3: Start Desktop Widget
npm run desktop:dev
# Terminal 4: Auto-fetch watcher (detects WeWe updates → fetches immediately)
npm run fetch:watchOr a minimal single-terminal start:
npm run fetch:all && npm run dev| Method | How | Best For |
|---|---|---|
npm run fetch:watch |
Monitors WeWe RSS every 2min, auto-fetches on update | Recommended — real-time WeChat updates |
npm run fetch:watch -- 60 |
Same but checks every 60 seconds | Faster detection, slightly more CPU |
| WebUI | Settings → Data Fetching → Set interval | Periodic fetch of all sources |
| Desktop Widget | Settings → Set interval | Same as WebUI |
npm run fetch:schedule |
Loop every 4 hours | Background cron-style |
| System cron | crontab -e → 0 */4 * * * cd /path/to/ai-hub && npm run fetch:all |
Server deployment |
Recommended setup: Use
npm run fetch:watchfor WeChat sources (instant updates) + WebUI auto-fetch every 30-60 min for all other RSS sources.
If something breaks (missing commands, modules not found, etc.):
# Reinstall all dependencies from scratch
rm -rf node_modules desktop/node_modules
npm install # WebUI dependencies
npm run desktop:install # Desktop widget dependencies
# Verify everything works
npm run dev # WebUI → http://localhost:3000
npm run desktop:dev # Desktop widget (separate terminal)This section is entirely OPTIONAL. If you don't need WeChat public account content, skip this section completely. All other 60+ sources (RSS feeds, arXiv papers, etc.) work out of the box with just
npm install— no Docker needed.
AI Hub uses WeWe RSS to fetch WeChat public account (微信公众号) articles. WeWe RSS is an independent open-source project that converts WeChat subscriptions into standard RSS/Atom feeds. It runs as a separate Docker container on your machine.
WeChat does not provide official RSS feeds. WeWe RSS acts as a bridge:
- It runs a Docker container with a headless browser
- It periodically scans WeChat accounts you configure
- It exposes the articles as standard Atom feeds at
http://localhost:4000 - AI Hub then fetches these Atom feeds just like any other RSS source
- Docker Desktop installed and running
- A WeChat account for login authentication in WeWe RSS
# Step 1: Pull and start WeWe RSS container (scan every 10 minutes)
docker run -d \
--name wewe-rss \
-p 4000:4000 \
-e DATABASE_TYPE=sqlite \
-e AUTH_CODE=your_auth_code \
-e CRON_EXPRESSION="*/10 * * * *" \
-v $(pwd)/wewe-data:/app/data \
cooderl/wewe-rss-sqlite:latest
# Step 2: Verify it's running
docker ps | grep wewe-rss
# Step 3: Open the dashboard
open http://localhost:4000
CRON_EXPRESSION="*/10 * * * *"means WeWe RSS scans WeChat accounts every 10 minutes. Default is every 2 hours which is too slow for timely updates.
In the WeWe RSS dashboard:
- Log in with the auth code you set above
- Scan the QR code with your WeChat to authorize
- Add WeChat public accounts you want to follow (search by name)
WeChat Public Accounts
↓ (WeWe RSS scans via authorized WeChat)
WeWe RSS (Docker, localhost:4000)
↓ (Atom feed: /feeds/MP_WXS_xxxxx.atom)
AI Hub engine.mjs (fetches like regular RSS)
↓
SQLite database → WebUI + Desktop Widget
AI Hub comes with 10+ WeChat sources pre-configured (pointing to localhost:4000). Once WeWe RSS is running and accounts are added, they'll be fetched automatically.
To add more sources manually:
- In WeWe RSS dashboard → find the feed URL (e.g.,
http://localhost:4000/feeds/MP_WXS_3073282833.atom) - In AI Hub → Settings → Data Sources → + Add Source:
- Name:
机器之心(display name) - URL: the feed URL from WeWe RSS
- Module: select target module (e.g., "AI News" or "World News")
- Name:
| Source | Category |
|---|---|
| 机器之心, 新智元, 智猩猩AI, 36氪(微信), 电手, 数字生命卡兹克 | AI News |
| 人民日报, 央视军事, 九万里, 外军防务研究前沿 | World News |
# Start WeWe RSS (run once after system reboot)
docker start wewe-rss
# Start the watcher (auto-fetches when WeWe has new content)
npm run fetch:watch
# Check WeWe RSS status
docker ps | grep wewe-rss
# Stop WeWe RSS (when not needed)
docker stop wewe-rss
# View WeWe RSS logs (if something goes wrong)
docker logs wewe-rss --tail 50WeWe RSS (Docker) AI Hub Watcher Result
Every 10 min scan → Every 2 min check feed → New content in ≤12 min
# One-time setup complete, daily just run:
docker start wewe-rss && npm run fetch:watchIf WeWe RSS is not running: WeChat sources will fail silently during fetch — you'll see fewer results but no errors. All other sources continue working normally.
# Prerequisites: Rust must be installed
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# First time: install desktop dependencies
npm run desktop:install
# Start desktop widget (dev mode with hot-reload)
npm run desktop:devThe widget will appear as a floating logo on your desktop. Click to expand the card list.
Note: The desktop widget reads from the same
data/ai-hub.dbas the WebUI. Make sure you've runnpm run fetch:allat least once so there's data to display.
npm run desktop:build
# Output:
# .app → desktop/src-tauri/target/release/bundle/macos/AI Hub.app
# .dmg → desktop/src-tauri/target/release/bundle/dmg/AI Hub_0.1.0_aarch64.dmgDownload from GitHub Releases and drag to Applications.
macOS Security Warning: If you see "AI Hub is damaged and can't be opened", run:
xattr -cr /Applications/AI\ Hub.appThis is normal for unsigned apps.
DMG Limitations: The standalone DMG includes pre-bundled data for immediate viewing and AI chat. However, fetching new data is not available without the full project directory + Node.js. For full functionality including auto-fetch, clone the repository instead.
ai-hub/
├── src/ # Next.js WebUI (App Router)
│ ├── app/ # Pages + API routes
│ ├── components/ # React components
│ ├── lib/ # SQLite queries, utilities
│ └── i18n/ # Bilingual translations
├── desktop/ # Tauri Desktop Widget
│ ├── src/ # React frontend
│ └── src-tauri/ # Rust backend
├── scripts/ # Data fetching engine
│ ├── engine.mjs # Main parallel fetcher
│ ├── fetch-papers.mjs # arXiv paper fetcher
│ └── fetchers/ # RSS, scrape, API strategies
├── data/ # SQLite database
│ └── ai-hub.db # Shared by WebUI + Desktop
└── public/ # Static assets
RSS/API Sources → engine.mjs (parallel fetch + filter)
↓
SQLite (data/ai-hub.db)
↙ ↘
Next.js WebUI Tauri Desktop Widget
↓ ↓
Browser (SSR) Native macOS Window
Both apps read/write the same database — favorites, sources, and configuration stay in sync automatically.
| Layer | Technology |
|---|---|
| WebUI | Next.js 16, React 19, Tailwind CSS 4 |
| Desktop | Tauri 2, Rust, React, Vite |
| Database | SQLite (better-sqlite3) with WAL mode |
| AI Chat | OpenAI-compatible API, SSE streaming |
| Fetching | rss-parser, parallel with deadline |
| Deploy | Vercel (WebUI), GitHub Releases (Desktop) |
- Technical Documentation — Architecture deep-dive, database schema, API reference
- User Guide — Feature walkthrough, configuration tips, FAQ


















