一个高频、权威、极简的监控系统,专注于加密货币、RWA(现实世界资产)、宏观经济及全球监管政策的实时监控。
🚨 SEC批准首个比特币现货ETF,规模$2.1亿,11家机构获批,贝莱德iShares Bitcoin Trust领衔
SEC approves first spot Bitcoin ETF, $2.1B scale, 11 institutions approved, led by BlackRock iShares Bitcoin Trust
#Policy #SEC #Bitcoin #ETF
🔗 来源
@BotFather/newbot 创建机器人https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates 获取 chat_id不需要配置Twitter API,机器人就能完全正常工作!
详见:Twitter集成指南
# 克隆项目
git clone <your-repo-url>
cd crypto-news-bot
# 运行启动脚本
chmod +x start.sh
./start.sh
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp .env.example .env
# 编辑 .env 填入你的API密钥
# 配置数据源(可选)
# 编辑 config/config.yaml
# 创建必要目录
mkdir -p data logs
# 测试运行
python src/main.py --once
# 正式运行
python src/main.py
# 配置环境变量
cp .env.example .env
# 编辑 .env
# 启动容器
docker-compose up -d
# 查看日志
docker-compose logs -f
# Telegram配置
telegram:
bot_token: "YOUR_TOKEN" # Bot令牌
chat_id: "@your_channel" # 频道ID
# Claude配置
anthropic:
api_key: "YOUR_KEY" # API密钥
model: "claude-sonnet-4-20250514" # 模型版本
# 调度配置
scheduler:
default_interval: 15 # 全源扫描间隔(分钟)
tier1_interval: 5 # Tier1高频间隔(分钟)
项目预配置了主流数据源,支持: - RSS源: CoinDesk, Cointelegraph, Bloomberg等 - 网页爬取: Binance公告等 - API: DeFiLlama, CoinMarketCap等 - Twitter: 关键人物推文(需API密钥)
可在 config/config.yaml 中添加/修改数据源。
┌──────────────┐
│ 数据源层 │ RSS / 网页 / API / Twitter
└──────┬───────┘
│
▼
┌──────────────┐
│ 抓取模块 │ SourceFetcher
└──────┬───────┘
│
▼
┌──────────────┐
│ 关键词过滤 │ KeywordFilter
└──────┬───────┘
│
▼
┌──────────────┐
│ AI处理 │ ClaudeProcessor
│ - 重要性 │ ├─ 重要性判定
│ - 结构化 │ ├─ 结构化提取
│ - 快讯生成 │ └─ 中英文生成
└──────┬───────┘
│
▼
┌──────────────┐
│ 去重模块 │ Deduplicator
│ - 逻辑去重 │ ├─ subject+action+object
│ - 语义去重 │ └─ 向量相似度
└──────┬───────┘
│
▼
┌──────────────┐
│ Telegram │ TelegramPublisher
│ 推送 │
└──────────────┘
判定标准: - ✅ 权威性:官方机构/核心角色发布 - ✅ 事件性:明确动作(批准/发行/调整) - ✅ 数据性:超预期波动(>5%) - ❌ 分析评论/预测/观点/科普
提取为JSON:
{
"subject": "SEC",
"action": "批准",
"object": "比特币现货ETF",
"key_detail": "$2.1亿规模",
"tag": "Policy"
}
逻辑去重:
- 提取 subject + action + object 签名
- 1小时内相同签名视为重复
语义去重: - 使用sentence-transformers生成向量 - 相似度>0.9视为重复 - 与最近1小时已发送快讯对比
格式:[Emoji] 中文快讯 + 英文版本 + 标签 + 来源链接
# 测试模式(只运行一次)
python src/main.py --once
# 只处理Tier1源
python src/main.py --tier tier1
# 指定配置文件
python src/main.py --config /path/to/config.yaml
# 生产模式(持续运行)
python src/main.py
# 实时日志
tail -f logs/bot.log
# 查看错误
grep "ERROR" logs/bot.log
# 查看数据库
sqlite3 data/news_cache.db
# 清理旧数据(保留7天)
DELETE FROM news_items WHERE fetched_time < datetime('now', '-7 days');
你: "帮我优化AI判定的prompt,让它对市场波动更敏感"
你: "添加一个功能:如果BTC价格变动>10%立即推送"
你: "优化去重逻辑,避免同一事件的不同来源被当作重复"
你: "为什么这条新闻没有被判定为重要?"
你: "数据库连接报错,帮我看看"
你: "Telegram推送失败,怎么处理限流?"
你: "帮我添加一个新数据源:Financial Times RSS"
你: "创建一个web界面查看历史快讯"
你: "写一个脚本导出今天的快讯为PDF"
crypto-news-bot/
├── src/
│ ├── main.py # 主程序入口
│ ├── database.py # 数据库模型
│ ├── fetcher.py # 数据源爬取
│ ├── filter.py # 关键词过滤
│ ├── ai_processor.py # Claude处理
│ ├── deduplicator.py # 去重模块
│ └── telegram_publisher.py # Telegram推送
├── config/
│ └── config.yaml # 主配置文件
├── data/
│ └── news_cache.db # SQLite数据库
├── logs/
│ └── bot.log # 运行日志
├── requirements.txt # Python依赖
├── Dockerfile # Docker配置
├── docker-compose.yml # Docker Compose
└── README.md # 本文档
编辑 config/config.yaml:
sources:
tier2:
- name: "Financial Times"
type: "rss"
url: "https://www.ft.com/rss/markets"
修改 src/ai_processor.py 中的prompt模板。
替换 ClaudeProcessor 类,实现相同接口。
可使用Flask/FastAPI构建管理界面: - 查看历史快讯 - 手动触发扫描 - 实时监控面板 - 数据统计图表
A: 检查: 1. Bot Token是否正确 2. Chat ID格式(频道用@开头,群组用负数) 3. 机器人是否是频道/群组管理员 4. 网络连接是否正常
A: 检查: 1. API Key是否有效 2. 是否有足够的Credits 3. 请求是否超过速率限制 4. 网络能否访问Anthropic API
A: 可能原因: 1. RSS源失效(检查日志) 2. 关键词过滤太严(调整白名单) 3. AI判定所有新闻不重要(检查prompt) 4. 都是重复新闻(正常现象)
A: 修改 config/config.yaml 中的 scheduler 配置。
A: 禁用语义去重(删除sentence-transformers依赖),或减少batch_size。
MIT License
欢迎提交Issue和Pull Request!
有问题?在GitHub上提Issue或发邮件到 [chenyuan200356@gmail.com]
免责声明: 本项目仅供学习研究使用,不构成任何投资建议。请遵守各数据源的使用条款。
$ claude mcp add crypto-news-bot \
-- python -m otcore.mcp_server <graph>