完全自动化的国际新闻抓取、分析和通知系统。系统每天自动抓取世界各地的权威新闻源,使用大模型进行深度分析,识别黑天鹅事件、预测世界局势并分析 A股/美股/港股/日股 投资机会,通过邮件自动发送精美 HTML 格式分析报告。
- 🌍 多源新闻抓取: News API + 32个权威 RSS 新闻源(含黑天鹅专项渠道)
- ⚡ 黑天鹅预警: 对比历史5天新闻,识别军事/金融/政治/能源/科技突发信号
- 🤖 智能AI分析: system/user prompt 分离,强制 Markdown 输出格式
- 📈 四大市场覆盖: A股、美股、港股、日本股市专项分析
- 💰 投资策略: 针对黑天鹅情景给出收益最大化方案(含 T+0~T+3 快速响应)
- 📧 自动邮件: 每天定时发送,Markdown 完整渲染(表格/粗体/引用块)
- ⏰ 自动调度: 支持定时自动执行,完全无人值守
- 🛡️ 高可靠性: 完善的错误处理和重试机制
- ⚙️ 高度可配置: 所有参数均可通过配置文件调整
info-os/
├── config.yaml # 主配置文件
├── requirements.txt # Python依赖
├── README.md # 本文件
├── run.sh # 快速启动脚本
├── src/ # 源代码目录
│ ├── config_loader.py # 配置加载模块
│ ├── news_fetcher.py # 新闻抓取模块(News API + RSS)
│ ├── llm_analyzer.py # 大模型分析模块(system/user prompt 分离)
│ ├── email_sender.py # 邮件发送模块(markdown→HTML)
│ ├── data_storage.py # 数据存储模块(含历史新闻加载)
│ ├── logger_config.py # 日志配置模块
│ ├── main.py # 主程序
│ ├── scheduler.py # 定时调度器
│ ├── test_config.py # 配置测试工具
│ ├── test_rss_sources.py # RSS源测试工具
│ └── test_email.py # 邮件测试工具
├── data/ # 数据目录
│ ├── news_cache/ # 新闻缓存(供历史分析使用)
│ └── reports/ # 分析报告(JSON + TXT)
└── logs/ # 日志目录
└── news_analyzer.log
本项目默认使用虚拟环境的 Python 解释器:
- 路径:
.venv/bin/python3 - 所有命令示例均使用此解释器
- 建议使用虚拟环境以避免依赖冲突
创建并激活虚拟环境:
cd /path/to/info-os
# 创建虚拟环境
python3 -m venv .venv
# 激活虚拟环境
source .venv/bin/activate # Linux/Mac
# 或 .venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt或直接使用完整路径:
.venv/bin/pip install -r requirements.txt系统支持多种邮箱服务,推荐使用QQ邮箱(国内访问稳定)。
-
开启SMTP服务
- 登录 QQ 邮箱网页版
- 设置 → 账户 → POP3/IMAP/SMTP服务
- 开启 SMTP 服务
- 生成授权码(记住这个授权码,不是QQ密码)
-
更新配置文件
config.yaml:
email:
smtp_server: "smtp.qq.com"
smtp_port: 587
sender_email: "your-qq-number@qq.com"
sender_password: "授权码" # 生成的授权码
recipient_emails: # 支持多个收件人
- "your-qq-number@qq.com"
- "another@163.com"-
启用两步验证:访问 https://myaccount.google.com/security
-
生成应用专用密码:访问 https://myaccount.google.com/apppasswords
-
更新配置文件:
email:
smtp_server: "smtp.gmail.com"
smtp_port: 587
sender_email: "your-email@gmail.com"
sender_password: "xxxx xxxx xxxx xxxx" # 应用专用密码
recipient_emails:
- "your-email@gmail.com"注意: Gmail需要使用应用专用密码,不是登录密码。如果连接超时,建议切换到QQ邮箱。
# 163邮箱
email:
smtp_server: "smtp.163.com"
smtp_port: 465
sender_email: "your-email@163.com"
sender_password: "授权码"系统支持多种大模型,选择其中一种配置即可。
llm:
provider: "openai-compatible"
api_key: ""
model: "qwen3.5:35b" # 或其他本地模型
base_url: "http://localhost:11434/v1/"
max_tokens: 65536
temperature: 0.8llm:
provider: "openai"
api_key: "sk-..."
model: "gpt-4o"
base_url: ""
max_tokens: 8000
temperature: 0.7llm:
provider: "openai-compatible"
api_key: "your-api-key"
model: "x1"
base_url: "https://spark-api-open.xf-yun.com/v2/"
max_tokens: 32768
temperature: 0.7llm:
provider: "anthropic"
api_key: "sk-ant-..."
model: "claude-3-5-sonnet-20241022"
max_tokens: 8000
temperature: 0.7访问 https://newsapi.org 注册获取免费API Key(100次/天):
news_api:
enabled: true
api_key: "your-newsapi-key"不配置也可以:系统会自动使用32个RSS新闻源,完全够用。
.venv/bin/python3 src/test_config.py立即执行一次(推荐先试试):
.venv/bin/python3 src/main.py系统会:
- 抓取全球新闻(约60秒,32个RSS源)
- 加载过去5天历史新闻(用于黑天鹅对比分析)
- AI分析生成11章报告(依模型而定)
- 发送HTML邮件报告
启动定时调度器(每天自动运行):
.venv/bin/python3 src/scheduler.py使用启动脚本(最简单):
./run.sh系统配置了32个权威新闻源,按功能分为五大类。
突发事件比普通媒体早15-30分钟报道,黑天鹅预警核心来源。
| # | 名称 | 特点 |
|---|---|---|
| 1 | Reuters World | 全球最大通讯社 |
| 2 | Sky News World | 英国24小时滚动 |
| 3 | NBC News | 美国主流突发 |
| 4 | ABC News International | 美国主流突发 |
| # | 名称 | 特点 |
|---|---|---|
| 5 | BBC World News | 英国公共广播 |
| 6 | BBC Business | BBC商业频道 |
| 7 | Al Jazeera | 中东视角 |
欧洲(4个): Financial Times、Deutsche Welle、France 24、The Guardian World
亚洲(6个): Channel NewsAsia、Nikkei Asia、The Straits Times、Bangkok Post、South China Morning Post、Asia Times
俄罗斯(2个): TASS、Moscow Times
美洲(4个): NPR News、CNN Top Stories、CNN World(+NBC/ABC已在突发预警分类)
专注于地缘政治高风险区域和军事动态。
| # | 名称 | 专注领域 |
|---|---|---|
| 24 | Middle East Eye | 中东事件,以色列/伊朗冲突最快报道 |
| 25 | Jerusalem Post | 以色列视角,中东军事预警 |
| 26 | IFP News (Iran) | 伊朗视角,了解对方行动信号 |
| 27 | Defence Blog | 军事装备、军事行动实时 |
| # | 名称 | 专注领域 |
|---|---|---|
| 28 | Defense News | 美国防务政策与军事采购 |
| 29 | CNBC World News | 突发对市场影响第一时间 |
| 30 | Washington Post World | 华盛顿决策内幕 |
| 31 | NYT World | 深度背景报道 |
| 32 | UN News / IMF News | 国际组织官方动态 |
.venv/bin/python3 src/test_rss_sources.py每次运行后,您会收到包含以下11章的专业分析报告:
3-5条最重要的全球事件,今日新闻优先,附历史对比
- 美洲地区 / 欧洲地区 / 亚洲地区 / 俄罗斯及独联体 / 中东地区
宏观指标、四大央行货币政策、贸易关系、大宗商品(油/金/铜)
主要事件、升温信号、经济传导路径
对比今日新闻与过去5天历史,识别突发信号
- 5.1 近期已发生的黑天鹅/灰犀牛事件
- 5.2 潜在信号识别(军事/金融/政治/能源/科技 五维度)
- 5.3 黑天鹅风险评级矩阵(含概率、冲击、关注度)
- 5.4 🎯 收益最大化投资策略
- 事件前预防性布局(A股/美股/港股/日股 各自操作)
- 事件发生后 T+0~T+3 快速响应清单
- 潜在收益区间估算
- 5.5 通用黑天鹅对冲清单(黄金/美元/防御板块比例)
沪深300/科创50走势、行业板块轮动、政策传导、黑天鹅冲击路径、具体股票池建议
标普500/纳指/道指、Mag-7走势、能源/金融/军工/科技板块、ETF与期权方向建议
恒生/恒生科技指数、南下资金、中概科技(腾讯/阿里等)、H股折价逻辑
日经225/TOPIX、日元汇率影响、半导体设备(东京电子等)、日央行加息节奏
四大市场运行路径、黑天鹅概率变化趋势、关键时间节点日历
- 四大市场仓位分配建议(A股/美股/港股/日股占比)
- 黑天鹅对冲仓位
- 近期关键操作(未来1-2周)
- 风险警戒线
报告保存位置:
- JSON格式:
data/reports/report_*.json - 文本格式:
data/reports/report_*.txt - 邮件: 完整 HTML 渲染(表格/粗体/引用块等)
analysis:
focus_areas:
- "全球经济趋势"
- "地缘政治风险"
- "黑天鹅事件预警与投资策略"
- "中国A股市场分析"
- "美股市场分析(标普500/纳斯达克/道琼斯)"
- "港股市场分析(恒生指数/恒生科技)"
- "日本股市分析(日经225/日元汇率)"
- "大宗商品价格(原油/黄金/铜)"
- "AI行业发展"
- "半导体产业链"
output_language: "zh-CN"
include_predictions: true
prediction_timeframe: "未来1-3个月"
include_a_share_analysis: true
a_share_focus:
- "沪深300指数趋势"
- "创业板/科创板机会"
- "行业板块轮动"
- "政策导向行业"
- "出口导向企业影响"
- "资金流向分析"scheduler:
enabled: true
run_time: "08:00" # 每天运行时间(24小时制)
timezone: "Asia/Shanghai"content_filter:
min_content_length: 100
exclude_keywords:
- "horoscope"
- "celebrity gossip"
- "entertainment"
- "sports"
include_keywords:
# 经济类
- "economy"
- "market"
- "trade"
- "inflation"
# 黑天鹅类(新增)
- "strike"
- "attack"
- "military"
- "missile"
- "conflict"
- "war"
- "crisis"
- "coup"
- "nuclear"
- "escalation"编辑 config.yaml,在 rss_feeds.sources 中添加:
- name: "新的新闻源"
url: "https://example.com/rss"
region: "middle_east" # global, americas, europe, asia, russia, middle_east, international
priority: 5 # 1-5,数字越大优先级越高# 实时查看日志
tail -f logs/news_analyzer.log
# 只看错误
grep ERROR logs/news_analyzer.log# 查看最新文本报告
ls -lt data/reports/*.txt | head -3
# 预览最新报告
cat $(ls -t data/reports/*.txt | head -1) | head -100.venv/bin/python3 src/test_email.py系统会自动清理超过配置天数的缓存,也可手动清理:
rm -rf data/news_cache/*
⚠️ 注意:手动清除后,下次运行将没有历史新闻参考数据,黑天鹅对比分析效果会下降。
nohup .venv/bin/python3 src/scheduler.py > logs/scheduler.log 2>&1 &
# 查看进程
ps aux | grep scheduler
# 停止
kill <PID>crontab -e添加(每天8:00运行):
0 8 * * * cd /path/to/info-os && .venv/bin/python3 src/main.py >> logs/cron.log 2>&1
系统使用 markdown 库将 LLM 输出转换为 HTML。如果某些格式未渲染:
- 检查 LLM 是否正确输出了 Markdown(查看
data/reports/report_*.txt) - 如果 LLM 将整个回复包在
```markdown ```代码块里,系统会自动剥除 - 确认
requirements.txt中的markdown>=3.5已安装
Gmail超时: 网络无法访问 Gmail SMTP,建议切换到 QQ 邮箱
认证失败: 确保使用授权码/应用专用密码,不是登录密码
.venv/bin/python3 src/test_email.py黑天鹅分析依赖历史新闻对比。如果是首次运行或缓存被清除,历史数据为空,分析质量较低。建议运行几天后效果明显提升。
- 检查
config.yaml中api_key、base_url、model是否正确 - 本地 Ollama:确认服务已启动(
ollama serve)且模型已下载(ollama pull qwen3.5:35b) - 检查
max_tokens是否超出模型限制
# 测试 RSS 源可用性
.venv/bin/python3 src/test_rss_sources.py
# 禁用 News API,只用 RSS
# config.yaml: news_api.enabled: false- 更换更强大的模型(如 GPT-4o 或 Claude-3.5-Sonnet)
- 调整
config.yaml的analysis.focus_areas - 增加
max_tokens以获得更长更详细的分析
- ✅ RSS Feed(32个源): 完全免费
- ✅ News API: 免费版100次/天(足够)
- ✅ 邮箱服务: 完全免费
- ✅ 本地 Ollama: 完全免费(需要本地GPU/CPU算力)
| 模型 | 每次费用 | 月费用(每天1次) |
|---|---|---|
| 本地 Ollama | 免费 | 免费 |
| 讯飞星火 | ~¥0.03-0.06 | ~¥1-2 |
| GPT-4o | ~¥0.3-0.6 | ~¥10-18 |
| Claude 3.5 Sonnet | ~¥0.2-0.4 | ~¥6-12 |
报告现在约 11 个完整章节,Token 消耗约 8,000-15,000/次(含历史新闻上下文)。
⚠️ 不要将config.yaml提交到公开仓库(包含 API Key 和邮箱密码)- 已在
.gitignore中配置忽略
- News API 免费版:100请求/天
- 邮箱:避免频繁发送(建议每天1次)
- 历史缓存存于
data/news_cache/,供黑天鹅信号对比使用 - 默认保留360天,可通过
storage.max_cache_days调整 - 清除缓存会降低黑天鹅分析精度
- 仅用于个人学习和研究
- 遵守各新闻源的使用条款
- 不用于商业目的或二次分发
扩展 email_sender.py:
- Telegram Bot
- 企业微信 Webhook
- 钉钉通知
- Slack
修改 config.yaml 的 analysis.focus_areas,或修改 src/llm_analyzer.py 的 _build_system_prompt() 调整报告章节结构。
目前系统通过 RSS 获取新闻。如需更实时的黑天鹅预警,可扩展集成:
- Twitter/X API(付费,$100/月 Basic):监控
@Reuters、@OSINTdefender等 - Telegram Bot API(免费):订阅
@warmonitors、@intelrepublic等频道
- 测试RSS源状态
.venv/bin/python3 src/test_rss_sources.py-
检查API配额:News API 使用量、大模型 API 费用
-
审查报告质量:重点检查黑天鹅章节的信号识别是否准确
-
查看日志异常
grep ERROR logs/news_analyzer.log | tail -20# 备份配置
cp config.yaml config.yaml.backup
# 备份历史报告
tar -czf reports_backup_$(date +%Y%m%d).tar.gz data/reports/MIT License - 可自由使用、修改和分发
- ✅ 创建虚拟环境:
python3 -m venv .venv - ✅ 安装依赖:
.venv/bin/pip install -r requirements.txt - ✅ 配置邮箱: 编辑
config.yaml(推荐QQ邮箱) - ✅ 配置大模型: 填入API Key 或配置本地 Ollama
- ✅ 测试配置:
.venv/bin/python3 src/test_config.py - ✅ 立即运行:
.venv/bin/python3 src/main.py - ✅ 启动调度:
.venv/bin/python3 src/scheduler.py
⚡ 让AI帮你每天洞察世界,识别黑天鹅,把握四大市场投资机会!