Workflow

Financial News Daily Digest

Automated daily digest of financial news across tickers and sectors. Search, score, and summarize market-moving headlines.

Overview

This workflow generates a daily financial news digest by querying Scavio for each tracked ticker and sector keyword, extracting top headlines and AI Overview summaries, scoring news items by potential market impact, and compiling a prioritized digest. The output is a structured JSON feed that can be pushed to Slack, email, or a dashboard. Runs before market open to give traders a morning briefing.

Trigger

Cron schedule (daily at 7:30 AM EST)

Schedule

Runs daily at 7:30 AM EST before market open

Workflow Steps

1

Load ticker and sector watchlist

Read the list of tracked tickers and sector keywords from configuration.

2

Query news for each ticker

Search Scavio Google for each ticker with news-focused queries to get current headlines.

3

Extract AI Overview summaries

Pull AI Overview text for each query to get consensus analyst views and key developments.

4

Score and deduplicate headlines

Remove duplicate stories across tickers and score remaining headlines by impact keywords.

5

Compile and distribute digest

Format the ranked digest and push to Slack channel, email, or save as JSON.

Python Implementation

Python
import requests
import json
from datetime import datetime
from pathlib import Path

API_KEY = "your_scavio_api_key"
IMPACT_WORDS = {"earnings", "beat", "miss", "guidance", "upgrade", "downgrade", "acquisition", "merger", "layoff", "fda", "sec", "investigation", "bankruptcy", "ipo", "split"}

def fetch_ticker_news(ticker: str) -> dict:
    res = requests.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "google", "query": f"{ticker} stock news today 2026", "ai_overview": True},
        timeout=15,
    )
    res.raise_for_status()
    data = res.json()
    headlines = []
    for r in data.get("organic", [])[:5]:
        title = r.get("title", "")
        snippet = r.get("snippet", "")
        impact = len(set(title.lower().split()) & IMPACT_WORDS) + len(set(snippet.lower().split()) & IMPACT_WORDS)
        headlines.append({"title": title, "snippet": snippet, "link": r.get("link", ""), "impact_score": impact})
    return {
        "ticker": ticker,
        "ai_summary": data.get("ai_overview", {}).get("text", ""),
        "headlines": sorted(headlines, key=lambda x: x["impact_score"], reverse=True),
    }

def run():
    date = datetime.utcnow().strftime("%Y-%m-%d")
    tickers = ["NVDA", "AAPL", "TSLA", "MSFT", "GOOG", "META", "AMZN", "AMD"]
    digest = {"date": date, "tickers": []}

    for ticker in tickers:
        news = fetch_ticker_news(ticker)
        digest["tickers"].append(news)

    Path(f"financial_digest_{date}.json").write_text(json.dumps(digest, indent=2))
    print(f"Financial digest {date}: {len(tickers)} tickers scanned")
    for t in digest["tickers"]:
        top = t["headlines"][0]["title"] if t["headlines"] else "no news"
        print(f"  ${t['ticker']}: {top}")

if __name__ == "__main__":
    run()

JavaScript Implementation

JavaScript
const API_KEY = "your_scavio_api_key";
const IMPACT = new Set(["earnings","beat","miss","guidance","upgrade","downgrade","acquisition","merger","layoff"]);

async function fetchNews(ticker) {
  const res = await fetch("https://api.scavio.dev/api/v1/search", {
    method: "POST",
    headers: { "x-api-key": API_KEY, "content-type": "application/json" },
    body: JSON.stringify({ platform: "google", query: `${ticker} stock news today 2026`, ai_overview: true }),
  });
  const data = await res.json();
  const headlines = (data.organic ?? []).slice(0, 5).map((r) => {
    const words = new Set(`${r.title ?? ""} ${r.snippet ?? ""}`.toLowerCase().split(/\s+/));
    return { title: r.title ?? "", snippet: r.snippet ?? "", impact: [...IMPACT].filter((w) => words.has(w)).length };
  });
  return { ticker, headlines: headlines.sort((a, b) => b.impact - a.impact), aiSummary: data.ai_overview?.text ?? "" };
}

for (const t of ["NVDA", "AAPL", "TSLA"]) {
  const news = await fetchNews(t);
  console.log(`$${t}: ${news.headlines[0]?.title ?? "no news"}`);
}

Platforms Used

Google

Web search with knowledge graph, PAA, and AI overviews

Frequently Asked Questions

This workflow generates a daily financial news digest by querying Scavio for each tracked ticker and sector keyword, extracting top headlines and AI Overview summaries, scoring news items by potential market impact, and compiling a prioritized digest. The output is a structured JSON feed that can be pushed to Slack, email, or a dashboard. Runs before market open to give traders a morning briefing.

This workflow uses a cron schedule (daily at 7:30 am est). Runs daily at 7:30 AM EST before market open.

This workflow uses the following Scavio platforms: google. Each platform is called via the same unified API endpoint.

Yes. Scavio's free tier includes 250 credits per month with no credit card required. That is enough to test and validate this workflow before scaling it.

Financial News Daily Digest

Automated daily digest of financial news across tickers and sectors. Search, score, and summarize market-moving headlines.