这是一个完全自动化的国际新闻抓取、分析和通知系统。系统每天自动抓取世界各地的权威新闻源(美国、欧洲、东南亚、俄罗斯等),使用大模型(OpenAI/Anthropic/讯飞星火)进行深度分析,预测世界局势和股市影响,并通过邮件自动发送分析报告。
- 🌍 多源新闻抓取: News API + 19个权威RSS新闻源(100%可用)
- 🤖 智能AI分析: 使用大模型深度分析全球政治经济形势
- 📊 股市预测: 分析新闻对股市的影响并提供专业投资建议
- 📧 自动邮件: 每天定时发送精美的HTML格式分析报告
- ⏰ 自动调度: 支持定时自动执行,完全无人值守
- 🛡️ 高可靠性: 完善的错误处理和重试机制
- ⚙️ 高度可配置: 所有参数均可通过配置文件调整
- 📦 模块化设计: 清晰的代码结构,易于扩展和维护
info-os/
├── config.yaml # 主配置文件
├── requirements.txt # Python依赖
├── README.md # 本文件
├── run.sh # 快速启动脚本
├── src/ # 源代码目录
│ ├── config_loader.py # 配置加载模块
│ ├── news_fetcher.py # 新闻抓取模块(News API + RSS)
│ ├── llm_analyzer.py # 大模型分析模块
│ ├── email_sender.py # 邮件发送模块
│ ├── 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 /Users/lhq/Develop/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_email: "your-qq-number@qq.com"-
启用两步验证
- 访问: https://myaccount.google.com/security
- 启用"两步验证"
-
生成应用专用密码
- 访问: https://myaccount.google.com/apppasswords
- 选择应用: "邮件"
- 选择设备: "Mac电脑"或"其他"
- 复制生成的16位密码
-
更新配置文件:
email:
smtp_server: "smtp.gmail.com"
smtp_port: 587
sender_email: "your-email@gmail.com"
sender_password: "xxxx xxxx xxxx xxxx" # 应用专用密码
recipient_email: "your-email@gmail.com"注意:
- Gmail需要使用应用专用密码,不是登录密码
- 如果连接Gmail超时,建议切换到QQ邮箱或163邮箱
163邮箱:
email:
smtp_server: "smtp.163.com"
smtp_port: 465
sender_email: "your-email@163.com"
sender_password: "授权码"126邮箱:
email:
smtp_server: "smtp.126.com"
smtp_port: 465
sender_email: "your-email@126.com"
sender_password: "授权码"系统支持多种大模型,选择其中一种配置即可。
llm:
provider: "openai"
api_key: "sk-..."
model: "gpt-4o"
base_url: "" # 留空使用官方API
max_tokens: 4000
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: 4000
temperature: 0.7访问 https://newsapi.org 注册获取免费API Key(100次/天):
news_api:
enabled: true
api_key: "your-newsapi-key"不配置也可以:系统会自动使用19个RSS新闻源,完全够用。
运行测试脚本验证配置:
.venv/bin/python3 src/test_config.py如果看到所有测试通过,说明配置成功!
立即执行一次(推荐先试试):
.venv/bin/python3 src/main.py系统会:
- 抓取全球新闻(约50秒)
- AI分析(约49秒)
- 发送邮件报告
总耗时约2分钟。
启动定时调度器(每天自动运行):
.venv/bin/python3 src/scheduler.py系统会每天8:00自动运行(可在config.yaml中修改时间)。
使用启动脚本(最简单):
./run.sh选择运行模式即可。
系统经过严格测试,配置了19个权威新闻源,测试通过率100%。
- ✅ BBC World News - 英国公共广播,32篇新闻
- ✅ BBC Business - BBC商业频道,40篇新闻
- ✅ Al Jazeera - 半岛电视台,50篇新闻
- ✅ NPR News - 美国公共广播,10篇新闻
- ✅ CNN Top Stories - CNN头条新闻
- ✅ CNN World - CNN世界新闻
- ✅ Financial Times - 英国金融时报,9篇新闻
- ✅ Deutsche Welle - 德国之声,151篇新闻
- ✅ France 24 - 法国国际新闻,24篇新闻
- ✅ The Guardian World - 卫报世界版
- ✅ Channel NewsAsia - 新加坡亚洲新闻台,20篇新闻
- ✅ Nikkei Asia - 日经亚洲,50篇新闻
- ✅ The Straits Times - 新加坡海峡时报,99篇新闻
- ✅ Bangkok Post - 曼谷邮报,10篇新闻
- ✅ South China Morning Post - 南华早报
- ✅ TASS - 俄罗斯塔斯社,45篇新闻
- ✅ Moscow Times - 莫斯科时报,50篇新闻
- ✅ UN News - 联合国新闻,30篇新闻
- ✅ IMF News - 国际货币基金组织,10篇新闻
地域覆盖均衡:
- 全球综合: 3个源
- 美洲: 3个源
- 欧洲: 4个源
- 亚洲: 5个源
- 俄罗斯: 2个源
- 国际组织: 2个源
媒体类型多样:
- 公共广播: BBC, NPR, Deutsche Welle, France 24
- 商业媒体: CNN, Financial Times, The Guardian, SCMP
- 通讯社: TASS
- 国际组织: UN, IMF
观点平衡:
- 西方视角: BBC, CNN, The Guardian, Financial Times
- 中东视角: Al Jazeera
- 亚洲视角: Nikkei Asia, SCMP, Channel NewsAsia
- 俄罗斯视角: TASS, Moscow Times
- 国际组织视角: UN, IMF
- RSS Feed: 19个源,每次约200篇新闻
- News API: 10国家×3类别×10篇 = 约300篇新闻
- 总计: 每次可抓取约500篇全球新闻
- 去重过滤后: 保留最重要的50篇进行AI分析
可以随时测试RSS源的可用性:
.venv/bin/python3 src/test_rss_sources.py每次运行后,您会收到包含以下内容的专业分析报告:
3-5条最重要的全球事件,附重要性说明
- 美洲地区: 主要事件、经济与政策动向
- 欧洲地区: 主要事件、经济与政策动向
- 亚洲地区: 主要事件、经济与政策动向
- 俄罗斯及独联体: 主要事件、经济与政策动向
- 宏观经济指标变化
- 货币政策走向
- 贸易关系变化
- 大宗商品价格趋势
- 核心风险点
- 潜在冲突领域
- 经济传导路径
- 整体市场影响
- 机会板块(哪些板块受益)
- 风险警示(哪些板块受损)
- 关注的上市公司或行业
- 关键事件预判
- 经济趋势预测
- 投资建议
- 需要监测的关键指标
- 投资组合调整建议
- 风险对冲策略
- 关注事项和时间节点
报告保存位置:
- JSON格式:
data/reports/report_*.json - 文本格式:
data/reports/report_*.txt - 邮件: HTML精美格式
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"
- "gdp"
- "inflation"analysis:
focus_areas: # 分析重点
- "全球经济趋势"
- "地缘政治风险"
- "股市影响因素"
- "贸易关系变化"
output_language: "zh-CN" # 输出语言
include_predictions: true # 是否包含预测
prediction_timeframe: "未来1-3个月" # 预测时间范围编辑 config.yaml,在 rss_feeds.sources 中添加:
- name: "新的新闻源"
url: "https://example.com/rss"
region: "asia" # global, americas, europe, asia, russia, international
priority: 4 # 1-5,数字越大优先级越高# 实时查看日志
tail -f logs/news_analyzer.log
# 查看最近100行
tail -100 logs/news_analyzer.log# 查看最新的文本报告
cat data/reports/report_*.txt | tail -200
# 查看JSON报告
cat data/reports/report_*.json | jq ..venv/bin/python3 src/test_email.py系统会自动清理7天前的缓存,也可以手动清理:
rm -rf data/news_cache/*如果不使用内置调度器,可以使用系统Cron:
crontab -e添加以下行(每天8:00运行):
0 8 * * * cd /Users/lhq/Develop/info-os/src && /usr/bin/python3 main.py >> /Users/lhq/Develop/info-os/logs/cron.log 2>&1
nohup .venv/bin/python3 src/scheduler.py > logs/scheduler.log 2>&1 &
# 查看进程
ps aux | grep scheduler
# 停止
kill <PID>Gmail超时:
- 网络无法访问Gmail SMTP
- 需要配置代理或切换到QQ邮箱
认证失败:
- 确保使用授权码/应用专用密码,不是登录密码
- Gmail需要先启用两步验证
解决方案:
# 测试邮件
.venv/bin/python3 src/test_email.py
# 推荐切换到QQ邮箱(国内稳定)检查:
- API Key是否正确
- 是否有足够配额
- base_url是否正确(OpenAI兼容接口)
- 网络连接是否正常
可能原因:
- 网络连接问题
- 某些国外RSS需要代理
- News API配额用完
解决方案:
# 测试RSS源
.venv/bin/python3 src/test_rss_sources.py
# 禁用News API,只用RSS
# 在config.yaml中设置: news_api.enabled: false调整分析配置:
analysis:
focus_areas:
- "你关心的维度1"
- "你关心的维度2"或更换更强大的大模型(如GPT-4)。
# 查看日志
tail -100 logs/news_analyzer.log
# 运行配置测试
.venv/bin/python3 src/test_config.py- ✅ RSS Feed: 完全免费
- ✅ News API: 免费版100次/天(足够使用)
- ✅ 邮箱服务: 完全免费(QQ、Gmail、163等)
- 大模型API(根据选择):
- OpenAI GPT-4: 约¥0.2-0.4/次
- 讯飞星火: 约¥0.03-0.06/次
- Claude: 约¥0.15-0.3/次
预计月成本: ¥1-12(每天运行一次,取决于选择的大模型)
推荐使用讯飞星火等国内模型,成本更低且速度快。
- 新闻抓取速度: 约50秒(19个RSS + News API)
- AI分析速度: 约49秒(讯飞星火x1)
- 总耗时: 约2分钟
- 成功率: 100%(RSS源全部可用)
- Token消耗: 约5,000-6,000 tokens/次
⚠️ 不要将config.yaml提交到公开仓库- API Key和密码都是敏感信息
- 已在
.gitignore中配置忽略
- News API免费版: 100请求/天
- 大模型API: 根据你的套餐限制
- 邮箱: 避免频繁发送(建议每天1次)
- 系统已配置权威媒体,排除了不可靠来源
- 建议定期测试RSS源可用性
- 如果某个源失效,及时替换
- 仅用于个人学习和研究
- 遵守各新闻源的使用条款
- 不用于商业目的或转发
可以扩展 email_sender.py,添加:
- Slack通知
- 微信通知(企业微信webhook)
- Telegram Bot
- 钉钉通知
修改 config.yaml:
analysis:
focus_areas:
- "加密货币市场"
- "AI行业发展"
- "新能源汽车"
- "你关心的任何维度"修改 llm_analyzer.py,支持新的API接口。
- 测试RSS源状态
.venv/bin/python3 src/test_rss_sources.py- 检查API配额
- News API使用量
- 大模型API使用量
- 审查报告质量
- 查看最近的分析报告
- 根据需要调整配置
- 查看日志异常
grep ERROR logs/news_analyzer.log# 备份配置
cp config.yaml config.yaml.backup
# 备份报告(可选)
tar -czf reports_backup_$(date +%Y%m%d).tar.gz data/reports/MIT License - 可自由使用、修改和分发
如有问题或建议:
- Email: haiqiang2linux@gmail.com
- 查看日志:
logs/news_analyzer.log - 运行测试:
python src/test_config.py
现在你已经了解了所有内容,可以:
- ✅ 创建虚拟环境:
python3 -m venv .venv - ✅ 安装依赖:
.venv/bin/pip install -r requirements.txt - ✅ 配置邮箱: 编辑
config.yaml(推荐QQ邮箱) - ✅ 配置大模型: 填入你的API Key
- ✅ 测试配置:
.venv/bin/python3 src/test_config.py - ✅ 立即运行:
.venv/bin/python3 src/main.py - ✅ 启动调度:
.venv/bin/python3 src/scheduler.py
⚡️ 让AI帮你每天洞察世界,把握投资机会!