MVP for monitoring crypto/AI RSS feeds, scoring relevance, generating platform-specific social content with AI, and publishing via Make.com, Buffer/Publer, and Telegram.
- News source management — 14 pre-seeded RSS feeds, custom sources, keywords, priority
- RSS ingestion — Internal cron fetcher + Make.com webhook (
POST /api/webhooks/rss-item) - Keyword detection & relevance scoring — Auto-queue high-score items
- Deduplication — URL exact match + title similarity (24h window)
- AI content generation — X, Telegram, Instagram, TikTok/Shorts scripts + image prompts
- Risk/safety review — Low/medium/high classification
- Content queue — Approval workflow + per-platform rate limits (X/TG per hour, IG per day, video every N days)
- Configurable scheduling UI — Settings page with helper text for each platform
- YouTube Shorts — Separate generated post per RSS item (alongside TikTok)
- Crypto AI niche mode — Auto-queue only AI-related stories when enabled
- Image generation — Optional OpenAI DALL·E (
IMAGE_GENERATION_ENABLED=true) - Video generation — Slideshow + OpenAI TTS voiceover via ffmpeg for TikTok / Instagram / Shorts (
VIDEO_GENERATION_ENABLED=true) - Headless approve —
POST /api/queue/approve/:postIdfor Make/cron - Dashboard — Sources, inbox, generated content, queue, settings, logs
- Node.js 20+
- Docker (for local Postgres)
cp .env.example .env
docker compose up -d
npm install
npm run db:push
npm run db:seed
npm run devOpen http://localhost:3009/dashboard.
See .env.example. Minimum for local UI:
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/crypto_rss_social?schema=public"
MAKE_RSS_WEBHOOK_SECRET=dev-secret
MAKE_PUBLISH_WEBHOOK_SECRET=dev-publish-secretAdd OPENAI_API_KEY for real AI generation (otherwise mock content is used).
| Method | Endpoint | Auth header |
|---|---|---|
| POST | /api/webhooks/rss-item |
x-make-webhook-secret: MAKE_RSS_WEBHOOK_SECRET |
| GET | /api/queue/next-post?platform=x |
MAKE_PUBLISH_WEBHOOK_SECRET |
| POST | /api/queue/mark-posted |
same |
| POST | /api/queue/mark-failed |
same |
| POST | /api/ai/generate-from-rss/:rssItemId |
— |
| POST | /api/ai/generate-video/:postId |
MAKE_PUBLISH_WEBHOOK_SECRET |
| POST | /api/webhooks/platform-response |
MAKE_PUBLISH_WEBHOOK_SECRET |
Internal RSS fetch (cron):
curl -H "x-cron-secret: $CRON_SECRET" http://localhost:3009/api/cron/fetch-rss- Architecture
- Make.com setup
- RSS sources
- AI prompts
- Database
- VPS deployment (cron RSS fetch, PM2, Nginx)
- Video generation (TikTok / IG / Shorts via DALL·E + TTS + ffmpeg)
| Command | Description |
|---|---|
npm run dev |
Start dev server |
npm run build |
Production build |
npm test |
Run Vitest suite |
npm run db:seed |
Seed RSS sources + defaults |
npm run db:push |
Push schema to DB |
Default brand Crypto Pulse — original crypto-native voice. Not affiliated with any influencer.