美股 AI 智能研报系统零基础部署指南
type
Post
status
Published
date
Mar 9, 2026
slug
yaobao
summary
这套系统是一个全自动的”虚拟华尔街宏观策略师”。它每天通过 Tavily 搜索引擎抓取全网最新美股新闻,交给大模型(GPT-4o 等)进行深度分析,然后将排版精美的研报自动发布到 Notion 数据库,并可选通过微信推送到你的手机。
tags
AI研报
category
技术分享
icon
password
美股 AI 智能研报系统 (Yanbao) 零基础部署指南
适用于完全不懂代码的用户 · 2026年3月
这套系统是一个全自动的”虚拟华尔街宏观策略师”。它每天通过 Tavily 搜索引擎抓取全网最新美股新闻,交给大模型(GPT-4o 等)进行深度分析,然后将排版精美的研报自动发布到 Notion 数据库,并可选通过微信推送到你的手机。
整个部署流程分为 5 个阶段,按顺序完成即可。预计总耗时:60~90 分钟。
第一阶段:申请 API 密钥
在开始前,你需要前往以下 4 个平台注册账号并获取密钥(Key)。密钥就像各平台给你的”通行证”,脚本运行时会用它们来调用各种服务。
1.1 大模型密钥(LLM_API_KEY)
推荐平台:OpenRouter(openrouter.ai)
- 打开 openrouter.ai,点击右上角 Sign In,用 Google 账号注册。
- 注册完成后进入控制台,点击左侧 Credits,充值 5 美元(约 36 元人民币,够用很久)。
- 点击左侧 Keys → 点击 Create Key,名称随意填写,复制生成的密钥(格式:
sk-or-v1-…)。
- 将此密钥命名为
LLM_API_KEY,妥善保存。
💡 OpenRouter 支持切换几十种大模型。默认使用openai/gpt-4o,你也可以在 Bitwarden Secrets Manager 中修改LLM_MODEL_NAME的值,改为anthropic/claude-3-5-sonnet等其他模型。
1.2 AI 搜索引擎密钥(TAVILY_API_KEY)
推荐平台:Tavily(tavily.com)
- 打开 tavily.com,点击 Get Started,用 Google 账号注册。
- 登录后在控制台首页即可看到你的 API Key(格式:
tvly-…),点击复制。
- 将此密钥命名为
TAVILY_API_KEY,妥善保存。
💡 免费套餐每月有 1000 次搜索配额,每日发一篇研报绰绰有余。
1.3 Notion 密钥与数据库 ID
Notion 需要两步设置:创建数据库 + 创建 API 集成。
第一步:创建 Notion 数据库
- 打开 notion.so,新建一个页面,在页面里输入
/database,选择 Table(表格)。
- 确保数据库包含以下属性列(在表格右侧点击
+添加): title(标题,默认存在)slug(文本类型 Text)date(日期类型 Date)summary(文本类型 Text)type(单选 Select)category(单选 Select)tags(多选 Multi-select)status(单选 Select)
- 在浏览器地址栏复制数据库 ID。URL 格式如下:
其中
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(32位字符)即为 NOTION_DATABASE_ID。第二步:创建 API 集成
- 前往 notion.so/my-integrations,点击 New Integration。
- 填写名称(如 Yanbao),选择你的工作区,点击 Submit。
- 复制 Internal Integration Secret(格式:
secret_…),命名为NOTION_API_KEY。
- 回到你的 Notion 数据库页面,点击右上角
···→ Connections → 搜索并添加你刚创建的集成。
1.4 微信推送 Token(可选)
如需每天研报发布后收到微信通知,可注册 PushPlus:
- 前往 pushplus.plus,用微信扫码登录。
- 复制首页显示的 Token,命名为
PUSHPLUS_TOKEN。
- 如需群发(推送给多人),还需要创建群组,复制 Topic,命名为
PUSHPLUS_TOPIC。
💡 不配置此项完全不影响研报生成和 Notion 发布,仅缺少微信通知功能。
1.5 密钥汇总表
收集完毕后,建议将所有密钥整理如下(可用密码管理器保存):
变量名 | 必填? | 说明 |
LLM_API_KEY | 必填 | OpenRouter 大模型密钥, sk-or-v1-... 开头 |
LLM_API_URL | 可选 | 默认为 OpenRouter,也可填入其他兼容 API 地址 |
LLM_MODEL_NAME | 可选 | 默认 openai/gpt-4o,可改为其他模型 |
TAVILY_API_KEY | 必填 | Tavily 搜索密钥, tvly-... 开头 |
NOTION_API_KEY | 必填 | Notion 集成密钥, secret_... 开头 |
NOTION_DATABASE_ID | 必填 | Notion 数据库 ID(32位字符串) |
FINAL_URL_PREFIX | 必填 | 研报链接前缀,如 https://your-blog.com |
PUSHPLUS_TOKEN | 可选 | PushPlus 微信推送 Token |
PUSHPLUS_TOPIC | 可选 | PushPlus 群组 Topic(群发时需要) |
MODE_SWITCH | 可选 | auto/daily/weekly,默认 auto(周日自动发周报) |
第二阶段:服务器环境搭建
你需要一台能长期运行的 Linux 云服务器(VPS)。国内腾讯云、阿里云轻量服务器均可,海外推荐 Vultr 或 Hetzner。系统选 Ubuntu 22.04 或 24.04。
步骤 1:连接服务器
在本地电脑打开终端(Mac 直接用终端,Windows 用 PowerShell 或 MobaXterm),执行:
输入服务器密码后回车,看到命令行提示符说明连接成功。
步骤 2:创建项目目录
步骤 3:创建 Python 虚拟环境
虚拟环境就像给这个项目单独准备一个”工具箱”,防止和服务器上其他程序冲突。
步骤 4:安装 Python 依赖包
耐心等待安装完成,看到
Successfully installed 字样即可。步骤 5:上传脚本文件
将
daily_report.py 上传到服务器的 /root/yanbao/ 目录下。上传方式(任选其一):- 用 SFTP 工具(如 FileZilla、Termius)直接拖拽上传。
- 在服务器上执行
nano /root/yanbao/daily_report.py,将代码粘贴进去,按Ctrl+O保存,Ctrl+X退出。
第三阶段:配置密钥管理(Bitwarden Secrets Manager)
我们使用 Bitwarden Secrets Manager(BWS)来管理所有密钥,而不是把密钥明文写进服务器文件。密钥集中加密存储在云端,服务器上永远不会出现任何明文密钥,安全级别大幅提升。
步骤 1:注册 Bitwarden 并开启 Secrets Manager
- 前往 bitwarden.com,注册一个免费账号(已有账号直接登录)。
- 登录后,点击左侧导航栏的 Secrets Manager,然后点击 Get Started 开启此功能(免费套餐即可)。
- 进入 Secrets Manager 控制台后,你会看到 Projects(项目)和 Secrets(密钥)两个区域。
步骤 2:创建项目
- 在 Secrets Manager 中,点击左侧 Projects,再点击 New Project。
- 项目名称填写
Yanbao_Report,点击 Save。
💡 项目是密钥的分组容器,之后创建的所有 Yanbao 密钥都归入此项目,便于统一管理和授权。
步骤 3:录入所有密钥
点击左侧 Secrets,再点击 New Secret,逐一将以下密钥录入。每条密钥填写 Key(键名)和 Value(值),Project 选择
Yanbao_Report:变量名 | 必填? | 说明 |
LLM_API_KEY | 必填 | OpenRouter 大模型密钥, sk-or-v1-... 开头 |
LLM_API_URL | 可选 | 填 https://openrouter.ai/api/v1/chat/completions |
LLM_MODEL_NAME | 可选 | 填 openai/gpt-4o,或其他模型名称 |
TAVILY_API_KEY | 必填 | Tavily 搜索密钥, tvly-... 开头 |
NOTION_API_KEY | 必填 | Notion 集成密钥, secret_... 开头 |
NOTION_DATABASE_ID | 必填 | Notion 数据库 ID(32位字符串) |
FINAL_URL_PREFIX | 必填 | 研报链接前缀,如 https://your-blog.com |
PUSHPLUS_TOKEN | 可选 | PushPlus 微信推送 Token(不用可留空值) |
PUSHPLUS_TOPIC | 可选 | PushPlus 群组 Topic(群发时需要) |
MODE_SWITCH | 可选 | 填 auto,或 daily / weekly 强制指定模式 |
💡 每条密钥录入后点击 Save。全部完成后,Secrets 列表里应该能看到 10 条记录。
步骤 4:创建机器账户并生成 Access Token
机器账户是专门给服务器自动化使用的账户,权限最小化,与你的个人账号完全隔离。
- 在 Secrets Manager 左侧,点击 Machine Accounts,再点击 New Machine Account。
- 账户名称填写
yanbao-server,点击 Save。
- 进入该机器账户的详情页,点击 Projects 标签,点击 Assign Project,选择
Yanbao_Report,权限选 Read(只读),点击 Assign。
- 点击 Access Tokens 标签,点击 Generate Token,名称随意,过期时间可选 Never(永不过期)。
- 复制生成的 Token(格式为
bws_xx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx)。这是唯一一次显示完整 Token,务必立即保存!
💡 这个 Access Token 是服务器访问 Bitwarden 密钥库的唯一凭证。只需在服务器上保存这一个 Token,其余所有密钥都由 BWS 在运行时动态注入,不落盘。
步骤 5:在服务器上安装 BWS 命令行工具
SSH 登录服务器后,执行以下命令下载并安装 BWS CLI:
✅ 看到版本号输出(如
bws 1.x.x),说明 BWS CLI 安装成功。步骤 6:验证密钥注入是否正常
用以下命令测试 BWS 能否正常读取你的密钥(替换为你的真实 Token):
✅ 能看到 10 条密钥的列表输出,说明 BWS 配置完全正确,可以进入下一阶段。
第四阶段:首次手动测试
在设置自动定时任务之前,先手动运行一次,确认整个流程能跑通。
步骤 1:用 BWS 注入密钥并运行
步骤 2:观察输出日志
正常运行时,终端会依次打印出以下信息:
✅ 看到”运行结束”后,立刻打开你的 Notion 数据库,如果出现了一篇新的研报页面,恭喜你,部署成功!
常见错误排查
如果运行失败,先查看日志文件:
错误信息 | 可能原因 | 解决方法 |
核心配置缺失 | BWS 中某个密钥的 Key 拼写错误 | 登录 Bitwarden Secrets Manager,核对每条密钥的键名是否与表格完全一致 |
LLM 生成失败 401 | LLM_API_KEY 值错误 | 在 BWS 中找到 LLM_API_KEY,点击编辑确认值正确,注意前后不要有多余空格 |
LLM 生成失败 402 | OpenRouter 余额不足 | 登录 openrouter.ai 充值 |
Notion 创建失败 | 集成未添加到数据库 | 回到 Notion 数据库页面,确认已在 Connections 添加集成 |
搜索服务异常 | TAVILY_API_KEY 错误 | 重新复制 Tavily 密钥,在 BWS 中更新对应密钥的值 |
第五阶段:设置每日自动运行
使用 Linux 的 Systemd 定时器,比传统 crontab 更稳定,即使服务器意外重启也能自动补发研报。
步骤 1:创建服务文件(定义怎么运行)
粘贴以下内容(将
bws_xx_你的真实Token 替换为你在第三阶段生成的 Access Token):按
Ctrl+O 保存,Ctrl+X 退出。步骤 2:创建定时器文件(定义何时运行)
粘贴以下内容(默认每天早上 7:00 运行):
💡 如需修改运行时间(比如改为早上 9:00),将07:00:00改为09:00:00即可。时间使用服务器本地时区。
步骤 3:激活定时器
✅ 看到
Active: active (waiting) 并显示 Next: 时间,说明定时器已成功启动!附录:日常运维命令速查
系统上线后,你只需要掌握以下几个命令就能管理日常运维。
查看状态
手动触发
暂停 / 恢复
切换运行模式
在 Bitwarden Secrets Manager 中找到
MODE_SWITCH 这条密钥,点击编辑修改其值即可,下次脚本运行时自动生效:值 | 说明 |
auto | 周日自动发周报,其余时间发日报(默认) |
daily | 每次运行都发日报 |
weekly | 每次运行都发周报 |
🎉 恭喜!你的专属 AI 策略师已正式入职,祝交易顺利!
Loading...