Files
kesslerio_finance-news/SKILL.md

281 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: finance-news
description: "市场新闻简报包含AI摘要。"
---
# Finance News Skill
AI-powered market news briefings with configurable language output and automated delivery.
## First-Time Setup
Run the interactive setup wizard to configure your sources, delivery channels, and schedule:
```bash
finance-news setup
```
The wizard will guide you through:
- 📰 **RSS Feeds:** Enable/disable WSJ, Barron's, CNBC, Yahoo, etc.
- 📊 **Markets:** Choose regions (US, Europe, Japan, Asia)
- 📤 **Delivery:** Configure WhatsApp/Telegram group
- 🌐 **Language:** Set default language (English/German)
-**Schedule:** Configure morning/evening cron times
You can also configure specific sections:
```bash
finance-news setup --section feeds # Just RSS feeds
finance-news setup --section delivery # Just delivery channels
finance-news setup --section schedule # Just cron schedule
finance-news setup --reset # Reset to defaults
finance-news config # Show current config
```
## Quick Start
```bash
# Generate morning briefing
finance-news briefing --morning
# View market overview
finance-news market
# Get news for your portfolio
finance-news portfolio
# Get news for specific stock
finance-news news AAPL
```
## Features
### 📊 Market Coverage
- **US Markets:** S&P 500, Dow Jones, NASDAQ
- **Europe:** DAX, STOXX 50, FTSE 100
- **Japan:** Nikkei 225
### 📰 News Sources
- **Premium:** WSJ, Barron's (RSS feeds)
- **Free:** CNBC, Yahoo Finance, Finnhub
- **Portfolio:** Ticker-specific news from Yahoo
### 🤖 AI Summaries
- Gemini-powered analysis
- Configurable language (English/German)
- Briefing styles: summary, analysis, headlines
### 📅 Automated Briefings
- **Morning:** 6:30 AM PT (US market open)
- **Evening:** 1:00 PM PT (US market close)
- **Delivery:** WhatsApp (configure group in cron scripts)
## Commands
### Briefing Generation
```bash
# Morning briefing (English is default)
finance-news briefing --morning
# Evening briefing with WhatsApp delivery
finance-news briefing --evening --send --group "Market Briefing"
# German language option
finance-news briefing --morning --lang de
# Analysis style (more detailed)
finance-news briefing --style analysis
```
### Market Data
```bash
# Market overview (indices + top headlines)
finance-news market
# JSON output for processing
finance-news market --json
```
### Portfolio Management
```bash
# List portfolio
finance-news portfolio-list
# Add stock
finance-news portfolio-add NVDA --name "NVIDIA Corporation" --category Tech
# Remove stock
finance-news portfolio-remove TSLA
# Import from CSV
finance-news portfolio-import ~/my_stocks.csv
# Interactive portfolio creation
finance-news portfolio-create
```
### Ticker News
```bash
# News for specific stock
finance-news news AAPL
finance-news news TSLA
```
## Configuration
### Portfolio CSV Format
Location: `~/clawd/skills/finance-news/config/portfolio.csv`
```csv
symbol,name,category,notes
AAPL,Apple Inc.,Tech,Core holding
NVDA,NVIDIA Corporation,Tech,AI play
MSFT,Microsoft Corporation,Tech,
```
### Sources Configuration
Location: `~/clawd/skills/finance-news/config/config.json` (legacy fallback: `config/sources.json`)
- RSS feeds for WSJ, Barron's, CNBC, Yahoo
- Market indices by region
- Language settings
## Cron Jobs
### Setup via OpenClaw
```bash
# Add morning briefing cron job
openclaw cron add --schedule "30 6 * * 1-5" \
--timezone "America/Los_Angeles" \
--command "bash ~/clawd/skills/finance-news/cron/morning.sh"
# Add evening briefing cron job
openclaw cron add --schedule "0 13 * * 1-5" \
--timezone "America/Los_Angeles" \
--command "bash ~/clawd/skills/finance-news/cron/evening.sh"
```
### Manual Cron (crontab)
```cron
# Morning briefing (6:30 AM PT, weekdays)
30 6 * * 1-5 bash ~/clawd/skills/finance-news/cron/morning.sh
# Evening briefing (1:00 PM PT, weekdays)
0 13 * * 1-5 bash ~/clawd/skills/finance-news/cron/evening.sh
```
## Sample Output
```markdown
🌅 **Börsen-Morgen-Briefing**
Dienstag, 21. Januar 2026 | 06:30 Uhr
📊 **Märkte**
• S&P 500: 5.234 (+0,3%)
• DAX: 16.890 (-0,1%)
• Nikkei: 35.678 (+0,5%)
📈 **Dein Portfolio**
• AAPL $256 (+1,2%) — iPhone-Verkäufe übertreffen Erwartungen
• NVDA $512 (+3,4%) — KI-Chip-Nachfrage steigt
🔥 **Top Stories**
• [WSJ] Fed signalisiert mögliche Zinssenkung im März
• [CNBC] Tech-Sektor führt Rally an
🤖 **Analyse**
Der S&P zeigt Stärke. Dein Portfolio profitiert von NVDA's
Momentum. Fed-Kommentare könnten Volatilität auslösen.
```
## Integration
### With OpenBB (existing skill)
```bash
# Get detailed quote, then news
openbb-quote AAPL && finance-news news AAPL
```
### With OpenClaw Agent
The agent will automatically use this skill when asked about:
- "What's the market doing?"
- "News for my portfolio"
- "Generate morning briefing"
- "What's happening with AAPL?"
### With Lobster (Workflow Engine)
Run briefings via [Lobster](https://github.com/openclaw/lobster) for approval gates and resumability:
```bash
# Run with approval before WhatsApp send
lobster "workflows.run --file workflows/briefing.yaml"
# With custom args
lobster "workflows.run --file workflows/briefing.yaml --args-json '{\"time\":\"evening\",\"lang\":\"en\"}'"
```
See `workflows/README.md` for full documentation.
## Files
```
skills/finance-news/
├── SKILL.md # This documentation
├── Dockerfile # NixOS-compatible container
├── config/
│ ├── portfolio.csv # Your watchlist
│ ├── config.json # RSS/API/language configuration
│ ├── alerts.json # Price target alerts
│ └── manual_earnings.json # Earnings calendar overrides
├── scripts/
│ ├── finance-news # Main CLI
│ ├── briefing.py # Briefing generator
│ ├── fetch_news.py # News aggregator
│ ├── portfolio.py # Portfolio CRUD
│ ├── summarize.py # AI summarization
│ ├── alerts.py # Price alert management
│ ├── earnings.py # Earnings calendar
│ ├── ranking.py # Headline ranking
│ └── stocks.py # Stock management
├── workflows/
│ ├── briefing.yaml # Lobster workflow with approval gate
│ └── README.md # Workflow documentation
├── cron/
│ ├── morning.sh # Morning cron (Docker-based)
│ └── evening.sh # Evening cron (Docker-based)
└── cache/ # 15-minute news cache
```
## Dependencies
- Python 3.10+
- `feedparser` (`pip install feedparser`)
- Gemini CLI (`brew install gemini-cli`)
- OpenBB (existing `openbb-quote` wrapper)
- OpenClaw message tool (for WhatsApp delivery)
## Troubleshooting
### Gemini not working
```bash
# Authenticate Gemini
gemini # Follow login flow
```
### RSS feeds timing out
- Check network connectivity
- WSJ/Barron's may require subscription cookies for some content
- Free feeds (CNBC, Yahoo) should always work
### WhatsApp delivery failing
- Verify WhatsApp group exists and bot has access
- Check `openclaw doctor` for WhatsApp status