X signal summaries — Top-performing prediction signals from Twitter/X (if Xpulse cache available)
Crypto prices — Bitcoin, Ethereum, plus any configured altcoins (if Coinbase configured)
Polymarket insights — Notable markets and volume activity
The brief is designed for 30-second scanning — each section is 3-8 lines maximum. If a data source is unavailable, the section gracefully degrades to "unavailable" and the brief continues.
If Kalshi credentials are not configured yet, the brief shows a realistic preview portfolio and edge block so first-time users still see value immediately.
When to Use This Skill
You trade prediction markets (Kalshi, Polymarket) and want daily market context
You need a quick morning summary: portfolio status + opportunities + signals
You want an evening briefing: either lightweight trading summary or AI-filtered news digest
You want integration with your other market intelligence tools (Kalshalyst, Arbiter, Xpulse)
You want plain text output suitable for SMS, iMessage, or any messaging platform
Installs
0
You want AI-powered news curation: two-stage filtering to prevent notification fatigue
Every Evening (Default: 6:00 PM): Day's activity summary (positions opened/closed, realized P&L), watch list for overnight risks, top X signals from the day, and unusual market activity.
Architecture
Design Philosophy
Resilience through isolation. Each section:
Wrapped in try/except to prevent one failure from breaking the entire brief
Reads from cache files (not live APIs) for speed and reliability
Gracefully degrades if data unavailable ("unavailable, check Kalshalyst directly")
Logs failures without interrupting output
Plain text output. No markdown, no emojis, no formatting — designed for chat delivery:
Compatible with iMessage, SMS, email, web chat, any platform
Scannable: max 80 chars per line, clear section headers
Evening briefing combines DuckDuckGo news search with local Qwen LLM for AI-powered news curation. Designed to prevent notification fatigue while surfacing genuinely material developments.
Architecture
Stage 1: Relevance & Significance Filter
Search for recent news across configured topics (default: prediction markets, AI policy, federal reserve)
Run each article through Qwen: is this significant? (0-1 confidence score, category classification)
Filter to articles with confidence >= min_confidence (default: 0.7)
Limit to top 10 most confident articles for Stage 2
Load history of previously sent articles (48h rolling, max 200 entries)
Compare candidate articles against recent history
Qwen decision: is this NEW and MATERIAL? Or just ongoing background noise?
Drop duplicates, commentary, routine announcements
Only pass through genuinely new developments or significant escalations
Fail-Closed Design:
If Qwen unavailable during Stage 1 or Stage 2: drop all articles (silence over noise)
If no material news: send nothing (don't interrupt with noise)
History persistence: ~/.openclaw/state/evening_news_history.json (max 200 entries, auto-cleanup)
Example Configuration
market_morning_brief:
evening_briefing:
enabled: true
mode: "news" # "market" for activity summary, "news" for full news digest
time: "18:00" # Briefing time (30-min window)
materiality_gate: true # Enable Stage 2 filter (prevents fatigue)
min_confidence: 0.7 # Minimum relevance threshold (0-1)
max_per_topic: 3 # Max articles per topic to search
topics:
- "prediction markets"
- "AI policy"
- "federal reserve"
- "geopolitics"
Command Usage
# Lightweight market variant (activity + watch list)
python scripts/evening_brief.py --mode market
# Full news digest variant
python scripts/evening_brief.py --mode news
# Force send regardless of time/already-sent-today
python scripts/evening_brief.py --force
# Dry run (print without sending)
python scripts/evening_brief.py --dry-run
# Enable verbose logging
python scripts/evening_brief.py --debug
News History
Stored at ~/.openclaw/state/evening_news_history.json. Max 200 entries, auto-cleans after 48 hours. Used by Stage 2 materiality gate to prevent duplicate notifications.
Cache File Integration
Each optional skill writes a cache file that the Morning Brief reads automatically:
Skill
Cache File
Section Unlocked
Kalshalyst
state/.kalshi_research_cache.json
Edge opportunities
Prediction Market Arbiter
state/.crossplatform_divergences.json
Cross-platform divergences
Xpulse
state/.x_signal_cache.json
X/Twitter signals
If a cache file doesn't exist, that section shows "unavailable" with the install command. See references/integration.md for cache file schemas.
For evening news digest: Ollama + Qwen model (ollama pull qwen3:latest), plus pip install ddgs (or duckduckgo-search as fallback).
Optional skills for additional brief sections: Kalshalyst, Prediction Market Arbiter, Xpulse (see Implementation Notes below).
Performance & Cost
Morning Brief
Runtime: <5 seconds (all cached data)
API calls: 1 (Polymarket public API) + 1 (Kalshi portfolio) = 2 calls
Cost: $0 (Kalshi free tier, Polymarket free)
With Optional Skills
If Kalshalyst, Arbiter, Xpulse installed:
Runtime: <2 seconds (reads cache files)
Cost: Only the skill installation costs (brief itself has no additional cost)
Troubleshooting
Portfolio not showing: Verify Kalshi API key is configured and not rate-limited. Run python scripts/morning_brief.py --debug.
Sections showing "unavailable": Expected if the skill isn't installed. Install with the clawhub install command shown in the output, then run the skill once to generate its cache file.
Evening news empty: Check Ollama is running (ollama list), test Qwen (ollama run qwen3:latest "test"), and verify ddgs (python -c "from ddgs import DDGS; print('OK')").
Stage 2 drops everything: The materiality gate filters out non-novel news. Clear history with rm ~/.openclaw/state/evening_news_history.json and retry, or disable with --no-materiality-gate.
Qwen timeout: Reduce article count with --max-per-topic 2 or skip Stage 2 with --no-materiality-gate.
Implementation Notes
This skill is designed for standalone operation but unlocks its full potential with the OpenClaw Prediction Market Trading Stack.
Standalone: Portfolio P&L + Polymarket trending + Crypto prices (if configured). No other skills required.
With the full stack: Each additional skill adds a new section to your daily brief automatically — no configuration needed. Install skills, run them once, and the Morning Brief picks up their cache files on the next run.