Aperçu
Pour rester à jour sur 10 sujets ou plus, il faut consulter des dizaines de sources chaque jour. Ce workflow automatise cela : définissez vos sujets, lancez des recherches quotidiennes, dédoublonnez par rapport à votre base de connaissances existante et ne stockez que les informations réellement nouvelles. S'associe à un LLM local pour le résumé, afin que votre recherche privée reste locale. Coût : moins de 1 $/mois pour 20 sujets.
Déclencheur
Tous les jours à 7h via cron.
Planification
Chaque jour à 7h
Étapes du workflow
Charger la liste de suivi des sujets
Lire les sujets depuis un fichier de configuration local. Chaque sujet a une requête de recherche et une catégorie.
Rechercher chaque sujet
Lancer une recherche Scavio pour chaque sujet. Extraire les meilleurs résultats avec titres, extraits et URL.
Dédoublonner par rapport à la base de connaissances
Comparer les URL des nouveaux résultats avec les entrées existantes de la base de connaissances. Conserver uniquement les éléments réellement nouveaux.
Résumer les nouvelles entrées
Pour chaque nouvelle entrée, créer un résumé structuré avec source, date et faits clés.
Ajouter à la base de connaissances
Ajouter les nouvelles entrées au fichier local de la base de connaissances avec horodatage et catégories.
Implémentation Python
import requests, os, json
from pathlib import Path
from datetime import date
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
KB_FILE = Path("knowledge_base.json")
TOPICS = [
{"query": "ai agent framework news 2026", "category": "ai"},
{"query": "search api updates 2026", "category": "search"},
{"query": "python 3.14 release notes", "category": "python"},
]
def search_topic(query: str) -> list:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": query, "country_code": "us"},
timeout=15,
)
results = resp.json().get("organic_results", [])[:5]
return [{"title": r.get("title", ""), "url": r.get("link", ""), "snippet": r.get("snippet", "")} for r in results]
def update_kb():
kb = json.loads(KB_FILE.read_text()) if KB_FILE.exists() else {"entries": [], "seen_urls": []}
seen = set(kb["seen_urls"])
new_entries = []
for topic in TOPICS:
results = search_topic(topic["query"])
for r in results:
if r["url"] not in seen:
entry = {
"date": str(date.today()),
"category": topic["category"],
"title": r["title"],
"url": r["url"],
"summary": r["snippet"],
}
new_entries.append(entry)
seen.add(r["url"])
kb["entries"].extend(new_entries)
kb["seen_urls"] = list(seen)
KB_FILE.write_text(json.dumps(kb, indent=2))
return len(new_entries)
added = update_kb()
print(f"Added {added} new entries to knowledge base")Implémentation JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const fs = await import('fs');
const KB_FILE = 'knowledge_base.json';
const TOPICS = [
{query:'ai agent framework news 2026', category:'ai'},
{query:'search api updates 2026', category:'search'},
{query:'python 3.14 release notes', category:'python'},
];
async function searchTopic(query) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query, country_code:'us'})});
return ((await r.json()).organic_results || []).slice(0,5).map(r=>({title:r.title||'', url:r.link||'', snippet:r.snippet||''}));
}
async function updateKb() {
let kb = {entries:[], seenUrls:[]};
try { kb = JSON.parse(fs.readFileSync(KB_FILE, 'utf8')); } catch {}
const seen = new Set(kb.seenUrls);
const newEntries = [];
for (const topic of TOPICS) {
const results = await searchTopic(topic.query);
for (const r of results) {
if (!seen.has(r.url)) {
newEntries.push({date:new Date().toISOString().split('T')[0], category:topic.category, title:r.title, url:r.url, summary:r.snippet});
seen.add(r.url);
}
}
}
kb.entries.push(...newEntries);
kb.seenUrls = [...seen];
fs.writeFileSync(KB_FILE, JSON.stringify(kb, null, 2));
return newEntries.length;
}
const added = await updateKb();
console.log('Added '+added+' new entries to knowledge base');Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA