You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cybersecurity news aggregator with a LinkedIn post generator.
Consumes 100+ RSS feeds, classifies articles by severity/category, and generates publication-ready content.
After rebuilding, use Ctrl + F5 or an incognito window to avoid the browser showing a cached frontend.
Useful commands:
# Check status
docker compose ps
# View logs
docker compose logs -f
# Force a manual scrape
curl -X POST http://localhost:3001/api/scrape
# List active sources
curl http://localhost:3001/api/sources
# Stop
docker compose down
Running without Docker
Requirements: Node.js 20+ and npm 10+.
cd CyberPulse/app
npm install
npm run build
npm run server
SQLite database is created at ./data/cyberpulse.db.
How to add RSS sources
There are three ways to add a new source.
Option 1: From the web UI (recommended)
Open CyberPulse and click Settings (gear icon).
Go to the Custom RSS Sources section.
Fill in:
Name: display name of the source.
RSS feed URL: e.g. https://my-source.com/feed.xml.
Category: one of the existing categories (see list below).
Click Add source.
If you protected the backend with CYBERPULSE_API_KEY, enter the CyberPulse API Key as well.
The new source is scraped in the next automatic cycle (every 15 minutes) or you can force it:
curl -X POST http://localhost:3001/api/scrape
Option 2: Via the REST API
# Without API key
curl -X POST http://localhost:3001/api/sources \
-H "Content-Type: application/json" \
-d '{ "name": "My New Source", "rssUrl": "https://my-source.com/feed.xml", "category": "THREAT INTEL" }'# With API key configured
curl -X POST http://localhost:3001/api/sources \
-H "Content-Type: application/json" \
-H "X-API-Key: your-secret-key" \
-d '{ "name": "My New Source", "rssUrl": "https://my-source.com/feed.xml", "category": "THREAT INTEL" }'
Option 3: Edit the code
Open app/server/seeds.ts.
Add an entry to the RSS_SOURCES array:
{name: 'My New Source',rssUrl: 'https://my-source.com/feed.xml',category: 'THREAT INTEL'}
Rebuild the container:
docker compose down
docker compose up -d --build
Available categories
Category
Typical use
VULNERABILITY
Vulnerabilities, patches, advisories
MALWARE
Malware, ransomware, sample analysis
THREAT INTEL
Threat intelligence, actor reports
DATA BREACH
Data leaks, breaches
PHISHING
Phishing campaigns
COMPLIANCE
Regulatory compliance
RESEARCH
Security research
PRIVACY
Privacy
POLICY
Government policy
INDUSTRY
Industry news
ALERT
CERT/CISA/NCSC alerts
AWARENESS
Security awareness
EXPLOIT
Exploits, PoC, zero-days
IOT
IoT security
TECH
Relevant general tech
Post directly to LinkedIn
CyberPulse can publish generated posts straight to your personal LinkedIn feed. It uses LinkedIn's official OAuth 2.0 API, so you keep full control of your account.
LinkedIn Page: you must associate a LinkedIn Company Page. If you don't have one, create a minimal page first.
Privacy policy URL: your website or LinkedIn profile URL.
Under the Products tab, request:
Share on LinkedIn — instant approval.
Sign In with LinkedIn using OpenID Connect — instant approval.
Go to the Auth tab:
Copy your Client ID and Client Secret.
Under OAuth 2.0 settings, add this redirect URL:
http://localhost:3001/api/linkedin/callback
2. Configure CyberPulse
Open CyberPulse and click Settings.
Scroll to the LinkedIn Account section.
Paste your Client ID, Client Secret, and the redirect URI (http://localhost:3001/api/linkedin/callback).
Click Save LinkedIn App.
3. Connect your account
In the same LinkedIn Account section, click Connect LinkedIn Account.
Authorize CyberPulse in the LinkedIn popup.
Once you see "LinkedIn Connected", you can close the popup.
4. Publish a post
Go to Generate Post, choose an article, and create your post.
Click Post to LinkedIn.
Review the text, choose Public or Connections, and click Publish.
Note: LinkedIn access tokens expire after approximately 60 days. If posting stops working, reconnect your account from Settings.
Built-in RSS sources (104 sources)
CyberPulse ships pre-configured with 100+ cybersecurity sources. Some may occasionally fail due to network issues, blocks, or outdated feeds, but working sources stay active.