DEV Community

tellmefrankie
tellmefrankie

Posted on

I built a news sentiment engine that delivers market-relevant headlines to Telegram every morning

Most financial news apps give you everything. Bloomberg, Reuters, CNBC — the feed is constant and mostly noise.

I wanted one thing: five headlines a day that are actually relevant to what I'm holding, with a sentiment score and a 2-sentence summary. Delivered to Telegram by 6am.

The Claude Code skill that does this costs about $0.003/day to run.


What it does

Every morning at 05:45 KST, the skill:

  1. Pulls from 4 RSS feeds (TechCrunch, The Verge, Hacker News, Bloomberg tech)
  2. Filters for keywords matching configured tickers and sectors
  3. Scores each article: positive / negative / neutral + magnitude (1-5)
  4. Selects the top 5 by combined relevance + sentiment magnitude
  5. Generates a 2-sentence summary per article
  6. Delivers to Telegram as a formatted card

The Telegram output

📰 Morning Briefing — May 14, 2026

━━━━━━━━━━━━━━

1. NVIDIA raises data center guidance ahead of Q2 earnings
   Sentiment: 📈 Positive (4/5)
   NVDA may see gap-up open. Options flow showing call buying yesterday.
   [Reuters]

━━━━━━━━━━━━━━

2. Fed speakers signal July cut timing uncertain
   Sentiment: ⚠️ Neutral (3/5)
   Rate sensitivity elevated in tech positions. Watch IWM/TLT spread.
   [Bloomberg]

...
Enter fullscreen mode Exit fullscreen mode

Five cards. Each with a sentiment score, a 2-sentence interpretation, and the source. No app to open, no feed to scroll.


Architecture

This is built as a Node.js pipeline that Claude Code orchestrates:

RSS feeds → Collector → Claude filter/rank → Claude summarize → Telegram
Enter fullscreen mode Exit fullscreen mode

Collector: rss-parser pulls feeds, deduplicates by URL, stores to SQLite.

Filter/rank: Claude API call with the full list of articles. Prompt asks for the top 5 by relevance to configured sectors and tickers, ranked by impact.

Summarize: Second Claude API call, one per selected article. Generates the 2-sentence summary and sentiment score.

Telegram: Formatted message via bot API.

Total Claude API cost per run: ~$0.003 at Haiku pricing.


Configuration

Natural language in the SKILL.md:

Track these sectors: AI infrastructure, semiconductors, rates/macro
Track these tickers: NVDA, AAPL, IWM, TLT
Deliver at 05:45 KST via Telegram
Enter fullscreen mode Exit fullscreen mode

Claude parses this and passes it as context to the filter prompt. No JSON config file.


Why RSS instead of a news API

Polygon.io, Bloomberg API, and similar services cost $50-500/month for news access. Yahoo Finance's news endpoint is unreliable and rate-limited.

RSS is free, predictable, and the major publications maintain their feeds. The signal-to-noise ratio is lower than a paid API, but the filter step handles it — Claude selects based on relevance, not just keywords.


Latency and reliability

The pipeline runs in under 60 seconds end-to-end on a $6/month VPS. If it fails (RSS timeout, Telegram API error), it retries once and logs the failure.

I've been running this for 3 weeks. Three failures — two RSS timeouts during holidays, one Telegram rate limit during a market volatility spike.


Installation (free)

The News Sentiment Engine is in the free tier:

git clone https://github.com/tellmefrankie/ai-investment-skills?utm_source=devto&utm_medium=article
cp news-sentiment-engine/SKILL.md ~/.claude/skills/news-sentiment-engine.md
Enter fullscreen mode Exit fullscreen mode

You need a Telegram bot token (free from @botfather) and an Anthropic API key.

Then in Claude Code:

/news-sentiment-engine
Track: AI, semiconductors, NVDA, AAPL
Deliver to Telegram at 6am
Enter fullscreen mode Exit fullscreen mode

The full morning briefing (9-wave analysis including options flow, technicals, and portfolio stress test) is in the Pro Bundle ($29).


Repo: github.com/tellmefrankie/ai-investment-skills — MIT licensed.

Not financial advice.

Top comments (0)