mirror of
https://github.com/runawaydevil/rssskull.git
synced 2026-04-20 01:34:40 -03:00
Enterprise-grade RSS to Telegram bot with advanced anti-blocking capabilities. Monitors RSS feeds and delivers content notifications to Telegram channels with enterprise-level reliability.
| docs | ||
| prisma | ||
| scripts | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| biome.json | ||
| docker-compose.yml | ||
| docker-entrypoint.sh | ||
| Dockerfile | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
| vitest.config.ts | ||
RSS Skull Bot
RSS Skull Bot is a TypeScript Telegram bot that monitors RSS, Atom, JSON Feed, Reddit subreddit RSS feeds and converted social sources, then delivers new items through a resilient queue-based pipeline.
Stack
- Node.js 20+
- TypeScript
- grammY +
@grammyjs/runner - Fastify
- Prisma + SQLite
- BullMQ + Redis
What It Does
- Monitors feeds on recurring schedules with Redis-backed workers
- Supports RSS 2.0, Atom 1.0 and JSON Feed 1.1
- Normalizes Reddit subreddit URLs to the public
/.rssfeed - Converts or discovers feeds from YouTube and websites
- Applies include/exclude filters per feed
- Uses dedupe, retries, circuit breakers and health monitoring
- Exposes operational endpoints such as
/health,/stats,/metricsand/resilience-stats
Quick Start
Docker
cp .env.example .env
Set BOT_TOKEN in .env, then run:
docker compose up -d --build
curl http://localhost:8916/health
If BOT_TOKEN is missing, Docker Compose now fails fast instead of starting a broken container.
Local Development
Prerequisites:
- Node.js 20+
- Redis
Run:
npm install
cp .env.example .env
For local development, set at least:
NODE_ENV=development
DATABASE_URL=file:./dev.db
REDIS_HOST=localhost
BOT_TOKEN=your_real_bot_token
Then:
npm run db:generate
npm run dev
Core Commands
/start/help/ping/add <name> <url>/list/remove <name>/enable <name>/disable <name>/discover <url>/status/filters .../template .../stats
Docs
License
MIT. See LICENSE.