Overview
Multi-source AI-native cybersecurity news pipeline. 6 cron triggers per day pull from 9 sources via SERP-scoped queries plus Reddit. Similarity filter dedupes. LLM edits with editorial angle. Throttled publication. Daily recap at 11:30 PM.
Trigger
6× daily (6 AM, 10 AM, 12 PM, 3 PM, 6 PM, 9 PM)
Schedule
6× daily
Workflow Steps
Cron triggers per burst
6 evenly spread firings per day.
LLM generates 6 fresh queries per burst
Avoid topics covered earlier today.
Parallel SERP across 9 sources
site: queries to TheHackerNews, BleepingComputer, KrebsOnSecurity, etc.
Reddit endpoint for community-flagged stories
r/cybersecurity, r/netsec.
Similarity-filter dedup
Embed titles, drop duplicates above 0.85 cosine similarity.
LLM edit with editorial angle
Per item, 300-word article with internal links.
Throttled publication cadence
5-minute spacing between published items.
Daily 11:30 PM recap
Aggregate the day's published items.
Python Implementation
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
H = {'x-api-key': API_KEY}
SOURCES = ['site:thehackernews.com 2026', 'site:bleepingcomputer.com 2026', 'site:krebsonsecurity.com']
def pull_burst():
items = []
for q in SOURCES:
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H, json={'query': q, 'search_type': 'news'}).json()
items += r.get('news_results', [])
return itemsJavaScript Implementation
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
const SOURCES = ['site:thehackernews.com 2026', 'site:bleepingcomputer.com 2026'];
async function burst() {
const items = [];
for (const q of SOURCES) {
const r = await fetch('https://api.scavio.dev/api/v1/search', { method: 'POST', headers: H, body: JSON.stringify({ query: q, search_type: 'news' }) }).then(r => r.json());
items.push(...(r.news_results || []));
}
return items;
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews
Community, posts & threaded comments from any subreddit