MarketPulse 是一个开源的金融资讯分析推送服务,托管在 GitHub,由用户 T1mn 开发。它基于 Google Gemini AI,自动获取最新金融新闻,分析市场影响,并生成包含投资建议、信心指数和来源可靠度的报告。分析结果通过 Bark 和 PushPlus 实时推送至用户设备。项目采用 Python 开发,支持多设备推送和自动化去重,适合关注股票市场的投资者和开发者。代码开放,社区可自由贡献,项目使用 MIT 许可证,允许灵活修改和使用。
功能列表
- 自动获取 Finnhub 等平台的最新金融新闻。
- 使用 Google Gemini AI 分析新闻,提供投资建议、信心指数和来源可靠度。
- 通过 Bark 和 PushPlus 推送分析结果至手机或电脑。
- 支持用户自定义关注的股票代码和信任的新闻源。
- 自动去重,避免重复推送相同新闻。
- 提供守护进程管理,支持后台运行、启动、停止和重启。
- 日志系统记录运行状态,便于调试和监控。
- 支持环境变量配置,保护 API 密钥安全。
使用帮助
安装流程
MarketPulse 是一个 Python 项目,安装需要基本的编程知识。以下是详细步骤:
- 安装 uv(推荐)
为高效管理 Python 环境,建议安装 uv 工具。运行以下命令:curl -LsSf https://astral.sh/uv/install.sh | sh
uv 能优化依赖解析,提升安装效率。
- 克隆代码库
使用 Git 克隆项目到本地:git clone https://github.com/T1mn/MarketPulse.git cd MarketPulse
- 创建虚拟环境并安装依赖
创建虚拟环境以隔离项目依赖:uv venv source .venv/bin/activate # Linux/macOS # 或 .venv\Scripts\activate # Windows
安装项目依赖:
uv pip install -r requirements.txt uv pip install -e .
依赖包括
google-generativeai
、python-dotenv
、schedule
和requests
等。 - 配置环境变量
复制示例配置文件并重命名为.env
:cp .env.example .env
编辑
.env
文件,填入 API 密钥:FINNHUB_API_KEY=your_finnhub_api_key GEMINI_API_KEY=your_gemini_api_key BARK_KEY_1=your_first_bark_key PUSHPLUS_TOKEN=your_pushplus_token PUSHPLUS_TOPIC=your_topic_code
获取密钥方法:
- Finnhub API 密钥:注册 Finnhub 获取。
- Gemini API 密钥:通过 Google Cloud 平台申请。
- Bark 密钥:安装 Bark 应用后获取。
- PushPlus Token:在 PushPlus 注册获取。
- 运行服务
有两种运行方式:- 前台运行(调试用) :
python -m MarketPulse.main
- 后台运行(推荐) :
python -m MarketPulse.daemon_manager start
后台运行支持进程管理,服务启动后可关闭终端。
主要功能操作
- 获取金融新闻
MarketPulse 通过 Finnhub API 每 30 分钟(默认)获取最新金融新闻。用户可在config.py
修改NEWS_FETCH_INTERVAL
调整频率:NEWS_FETCH_INTERVAL = 30 # 分钟
操作步骤:
- 启动服务后,程序自动从 Finnhub 获取新闻。
- 可在
config.py
配置信任新闻源,如:TRUSTED_SOURCES = ["Reuters", "Bloomberg", "CNBC"]
- 新闻数据保存在本地,供 AI 分析。
- AI 分析与推送
Google Gemini AI 分析新闻,生成包含投资建议、信心指数(百分比)和来源可靠度的报告。结果通过 Bark 或 PushPlus 推送。
操作步骤:- 确保
.env
文件配置了 Bark 或 PushPlus 密钥。 - 服务运行后,分析结果自动推送至配置的设备。
- Bark 推送显示为手机通知,PushPlus 支持微信推送(见 GitHub 仓库
img
文件夹中的示例)。
- 确保
- 自定义股票监控
用户可配置关注的股票代码,跟踪特定公司新闻。
操作步骤:- 编辑
config.py
,修改US_MARKET_SYMBOLS
:US_MARKET_SYMBOLS = ["AAPL", "TSLA", "MSFT"]
- 保存后重启服务,程序将优先分析这些股票的新闻。
- 编辑
- 守护进程管理
MarketPulse 支持后台运行,管理命令如下:python -m MarketPulse.daemon_manager start # 启动 python -m MarketPulse.daemon_manager stop # 停止 python -m MarketPulse.daemon_manager restart # 重启 python -m MarketPulse.daemon_manager status # 查看状态
进程 ID 保存在
market_pulse.pid
文件中,自动管理。 - 日志查看
日志保存在logs
目录,包含:market_pulse.log
:主程序日志,最大 10MB,保留 5 个备份。daemon.log
:守护进程日志,最大 5MB,保留 3 个备份。
查看实时日志:
tail -f logs/market_pulse.log
- 贡献代码
作为开源项目,用户可通过 GitHub 提交改进。
操作步骤:- Fork 仓库到个人账户。
- 修改代码后提交 Pull Request。
- 参考
CONTRIBUTING.md
(若存在)或直接提交问题和建议。
注意事项
- 确保 API 密钥有效,Finnhub 和 Gemini 有请求限制,需遵守配额。
- 首次运行会立即执行一次任务,之后按配置间隔运行。
- 状态文件
app_state.json
记录已处理新闻 ID,避免重复推送。 - 使用 uv 管理环境可提高依赖安装效率。
- 日志文件定期轮转,避免占用过多磁盘空间。
应用场景
- 投资者获取实时市场洞察
投资者通过 MarketPulse 接收 AI 分析的金融新闻,了解市场动态,获取投资建议,辅助决策。 - 开发者学习 AI 和金融数据处理
开发者可研究代码,学习如何整合 Google Gemini AI、Finnhub API 和推送服务,适合 AI 和金融领域的实践。 - 企业监控特定股票新闻
企业可配置关注股票代码,获取相关新闻分析,用于战略规划或风险管理。
QA
- MarketPulse 支持哪些新闻源?
默认通过 Finnhub 获取新闻,支持配置信任源如 Reuters、Bloomberg 等,具体在config.py
中设置。 - 需要付费 API 吗?
是的,Finnhub 和 Gemini API 需要注册获取密钥,部分功能可能涉及免费配额或付费计划。 - 如何避免重复推送?
项目使用app_state.json
记录已处理新闻 ID,自动去重。 - 可以运行在云服务器上吗?
可以,推荐使用守护进程模式运行,支持 Linux、Windows 等系统。 - 如何添加新功能?
Fork 仓库,修改代码后提交 Pull Request。建议先查看 Issues 页面,了解社区需求。