stock-ai-agent/backend/app/news_agent/sources.py
2026-03-03 01:06:30 +08:00

315 lines
9.0 KiB
Python
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.

"""
新闻源配置
定义各类新闻的 RSS 源
"""
# 加密货币新闻源
CRYPTO_NEWS_SOURCES = [
{
"name": "Cointelegraph",
"url": "https://cointelegraph.com/rss",
"category": "crypto",
"language": "en",
"priority": 1.0, # 权重
"enabled": True
},
{
"name": "CoinDesk",
"url": "https://www.coindesk.com/arc/outboundfeeds/rss/",
"category": "crypto",
"language": "en",
"priority": 1.0,
"enabled": True
},
{
"name": "Decrypt",
"url": "https://decrypt.co/feed",
"category": "crypto",
"language": "en",
"priority": 0.9,
"enabled": True
},
{
"name": "The Block",
"url": "https://www.theblock.co/rss.xml",
"category": "crypto",
"language": "en",
"priority": 0.9,
"enabled": True
},
{
"name": "律动 BlockBeats",
"url": "https://www.theblockbeats.info/feed",
"category": "crypto",
"language": "zh",
"priority": 1.0,
"enabled": False # RSS 格式问题,暂时禁用
},
{
"name": "巴比特",
"url": "https://www.8btc.com/feed",
"category": "crypto",
"language": "zh",
"priority": 0.8,
"enabled": False # 连接不稳定,暂时禁用
},
{
"name": "CoinGlass",
"url": "https://coinglass.com/news/rss",
"category": "crypto",
"language": "en",
"priority": 0.8,
"enabled": False # 返回 HTML 而非 RSS暂时禁用
},
{
"name": "CryptoSlate",
"url": "https://cryptoslate.com/news/feed",
"category": "crypto",
"language": "en",
"priority": 0.8,
"enabled": False # RSS 格式问题,暂时禁用
},
{
"name": "AMBCrypto",
"url": "https://ambcrypto.com/feed",
"category": "crypto",
"language": "en",
"priority": 0.7,
"enabled": True
},
{
"name": "Whale Alert",
"url": "https://whale-alert.io/rss",
"category": "crypto",
"language": "en",
"priority": 0.7,
"enabled": False # 大额转账,可选择性开启
},
]
# 股票新闻源
STOCK_NEWS_SOURCES = [
{
"name": "Reuters Business",
"url": "https://www.reuters.com/finance/rss",
"category": "stock",
"language": "en",
"priority": 1.0,
"enabled": False # 返回 HTML 而非 RSS暂时禁用
},
{
"name": "CNBC",
"url": "https://www.cnbc.com/id/100003114/device/rss/rss.html",
"category": "stock",
"language": "en",
"priority": 1.0,
"enabled": True
},
{
"name": "Bloomberg Markets",
"url": "https://feeds.bloomberg.com/markets/news.rss",
"category": "stock",
"language": "en",
"priority": 1.0,
"enabled": True
},
{
"name": "Yahoo Finance",
"url": "https://finance.yahoo.com/news/rssindex",
"category": "stock",
"language": "en",
"priority": 0.8,
"enabled": True
},
{
"name": "MarketWatch",
"url": "https://www.marketwatch.com/rss/topstories",
"category": "stock",
"language": "en",
"priority": 0.9,
"enabled": True
},
{
"name": "Seeking Alpha",
"url": "https://seekingalpha.com/article/rss",
"category": "stock",
"language": "en",
"priority": 0.9,
"enabled": False # RSS 格式问题,暂时禁用
},
{
"name": "华尔街见闻",
"url": "https://wallstreetcn.com/rss",
"category": "stock",
"language": "zh",
"priority": 0.9,
"enabled": False # RSS 格式问题,暂时禁用
},
{
"name": "雪球",
"url": "https://xueqiu.com/statuses/hot_stock.xml",
"category": "stock",
"language": "zh",
"priority": 0.8,
"enabled": False # 需要认证,暂时禁用
},
{
"name": "Investing.com",
"url": "https://www.investing.com/rss/news.rss",
"category": "stock",
"language": "en",
"priority": 0.8,
"enabled": True
},
{
"name": "Business Insider",
"url": "https://markets.businessinsider.com/rss/news",
"category": "stock",
"language": "en",
"priority": 0.7,
"enabled": True
},
]
# 获取所有启用的新闻源
def get_enabled_sources(category: str = None) -> list:
"""
获取启用的新闻源
Args:
category: 分类过滤 ('crypto', 'stock', None 表示全部)
Returns:
启用的新闻源列表
"""
all_sources = CRYPTO_NEWS_SOURCES + STOCK_NEWS_SOURCES
if category:
return [s for s in all_sources if s['enabled'] and s['category'] == category]
return [s for s in all_sources if s['enabled']]
# 关键词配置 - 用于第一级过滤
CRYPTO_KEYWORDS = {
'high_impact': [
# 监管相关(只保留真正重大的)
'SEC ETF', 'ETF approved', 'ETF rejected', 'regulation ban',
'监管禁令', 'ETF批准', 'ETF拒绝',
# 重大事件(只保留真正重大的)
'hack $', 'exploit $', ' $ billion hack', # 需要金额上下文,避免普通新闻
'bankruptcy', '破产', 'shut down', '暂停交易',
'exchange collapse', '交易所倒闭',
# 超级机构(重大新闻才推送)
'BlackRock ETF', 'Grayscale ETF', 'Fidelity ETF',
'贝莱德ETF', '灰度ETF',
# 重大安全事故
'bridge exploit', 'smart contract hack', '$ million stolen',
'跨链桥攻击', '智能合约漏洞',
],
'medium_impact': [
# 一般监管
'SEC', 'regulation', 'legal', '合规', '监管',
'approve', 'ban', '禁令',
# 市场动态(常见的价格波动)
'ATH', 'all-time high', 'crash', 'surge', 'plunge',
'历史新高', '暴跌', '暴涨', '突破',
# 技术更新
'upgrade', 'fork', 'airdrop', 'launch',
'升级', '分叉', '空投', '上线',
# 并购/合作
'partnership', 'acquisition', 'merger',
'合作', '并购', '收购',
# 宏观经济
'fed', 'inflation', 'recession', 'interest rate',
'美联储', '通胀', '加息', '降息',
# 机构和钱包
'whale', 'wallet', 'exchange',
'巨鲸', '钱包', '交易所',
]
}
STOCK_KEYWORDS = {
'high_impact': [
# 只保留真正重大、罕见的事件
# 破产/退市级别
'bankruptcy', 'delisting', 'fraud', 'scandal',
'破产', '退市', '欺诈', '丑闻',
# 重大监管事件
'antitrust', 'DOJ ', 'SEC investigation', 'sanction',
'反垄断', '司法部', '证监会调查', '制裁',
# 超级并购/分拆
'mega merger', 'mega acquisition', 'breakup', 'spinoff',
'巨型并购', '分拆',
# 重大安全事故/风险
'data breach', 'cyber attack', 'massive layoff', 'shutdown',
'数据泄露', '网络攻击', '大规模裁员', '停产',
],
'medium_impact': [
# 财报相关(移到这里,因为太常见)
'earnings', 'revenue', 'profit', 'loss', 'guidance',
'财报', '营收', '利润', '业绩预告',
'beat', 'miss', 'surprise',
'超预期', '不及预期',
# 一般事件
'FDA', 'approval', 'recall', 'lawsuit', 'IPO',
'批准', '召回', '诉讼', '上市',
# 并购重组(一般规模)
'merger', 'acquisition', 'buyout',
'并购', '收购', '重组',
# 市场动态
'surge', 'plunge', 'rally', 'crash',
'暴涨', '暴跌', '反弹', '崩盘',
# 管理层变动
'CEO', 'CFO', 'resign', 'appoint', 'executive',
'辞职', '任命',
# 评级相关
'upgrade', 'downgrade', 'rating', 'target price',
'评级', '目标价', '上调', '下调',
'dividend', 'buyback', 'split',
'分红', '回购', '拆股',
]
}
# 常见的币种和股票代码映射
SYMBOL_MAPPINGS = {
# 加密货币
'BTC': ['bitcoin', 'btc', '比特币'],
'ETH': ['ethereum', 'eth', '以太坊'],
'BNB': ['binance', 'bnb', '币安'],
'SOL': ['solana', 'sol'],
'XRP': ['ripple', 'xrp'],
'ADA': ['cardano', 'ada'],
'DOGE': ['dogecoin', 'doge', '狗狗币'],
'AVAX': ['avalanche', 'avax'],
'DOT': ['polkadot', 'dot'],
'MATIC': ['polygon', 'matic'],
# 美股
'AAPL': ['apple', 'aapl', '苹果'],
'NVDA': ['nvidia', 'nvda', '英伟达'],
'MSFT': ['microsoft', 'msft', '微软'],
'GOOGL': ['google', 'alphabet', 'googl', '谷歌'],
'AMZN': ['amazon', 'amzn', '亚马逊'],
'TSLA': ['tesla', 'tsla', '特斯拉'],
'META': ['meta', 'facebook', 'meta'],
'BRK.B': ['berkshire', 'buffett', '伯克希尔'],
'JPM': ['jpmorgan', 'jpm', '摩根大通'],
}