API 密钥

Richfolio 最多使用 5 个外部服务,全都有慷慨的免费额度。只有 Resend 和接收邮箱是必需的 — 其它都是可选。

将每个密钥添加为仓库 Secret:Settings → Secrets and variables → Actions → Secrets 标签页。RECIPIENT_EMAIL 改为添加为变量(便于查看和编辑)。

GitHub Actions Secret


Resend(邮件)— 必需

Resend 负责投递 HTML 邮件报告。

  1. 进入 resend.com 并注册
  2. 在控制台找到 API Keys
  3. 点击 Create API Key、起个名字并复制密钥
  4. 将其添加为 GitHub Secret — 名称:RESEND_API_KEY,值:刚才复制的密钥

免费额度: 每月 3,000 封邮件。默认从 onboarding@resend.dev 发件。除非你验证了自定义域名,否则只能发送给你的账号注册邮箱(Dashboard → Domains → Add Domain → 添加 DNS 记录)。


接收邮箱 — 必需

添加为 GitHub 变量(不是 Secret):名称:RECIPIENT_EMAIL,值:你的邮箱地址。

除非验证了自定义域名,否则必须与 Resend 账号邮箱一致。


NewsAPI(新闻头条)— 可选

为每日简报提供每个股票代码的头条新闻。

  1. 进入 newsapi.org 并注册
  2. 控制台会立即显示你的 API 密钥
  3. 添加为 GitHub Secret — 名称:NEWS_API_KEY,值:控制台中的密钥

免费额度: 每日 100 次请求。Richfolio 每次运行通过批量请求只用约 4 次。仅返回最近 24 小时的头条。若未设置,简报会跳过新闻部分。


AI 服务商 — 启用 AI 建议至少需要一个

Richfolio 支持两家 AI 服务商:Google GeminiAnthropic Claude。至少设置其中一个即可启用 AI 买入建议。两个都设置则会并行运行 — 分数取平均,并在每条建议旁显示每家 AI 的详细拆解。两个都不设置时,Richfolio 会回退到基于缺口的建议(不使用 AI)。

模式 配置 输出
不使用 AI 两个密钥都未设置 仅基于缺口的建议
单 AI 设置其中一个 与现状一致 — 每个标的一组操作 + 置信度
多 AI 两个都设置 每个标的取共识操作 + 平均置信度;每条建议下显示每家 AI 的拆解;STRONG BUY 要求全体一致

Google Gemini — 可选

由 Gemini 2.5 Flash 驱动的 AI 买入建议。

  1. 进入 aistudio.google.com/apikey
  2. 点击 Create API Key,选择一个 Google Cloud 项目(或新建一个)
  3. 复制密钥并添加为 GitHub Secret — 名称:GEMINI_API_KEY,值:刚才复制的密钥

免费额度: 每日 250 次请求,每分钟 10 次。Richfolio 每次运行使用 2 次请求(Stage 1 Observe + Stage 2 Decide),每个 STRONG BUY 标的另外增加 1 次用于详细分析。新密钥可能需要几分钟才能激活(你可能先看到 429 错误)。

关于 Gemini 模型层级的说明

Google 的定价页面声明 Gemini 2.5 Pro 对输入和输出 token 都是“免费”。实际使用中,免费层的 Pro 请求经常碰到 429 RESOURCE_EXHAUSTED — 即使用量很低也会。Google 没有公布免费层的实际 RPD(每日请求数)上限;第三方资料估计 Pro 大约限制在 100 RPD,但实际数字似乎因账号而异且无保证。

Richfolio 默认使用 Gemini 2.5 Flash,因为 Flash 的免费额度更慷慨且更稳定。对金融分析文本来说,质量差异可以忽略。


Anthropic Claude — 可选

由 Claude(默认 Sonnet 4.6)驱动的 AI 买入建议。

  1. 进入 console.anthropic.com 并注册
  2. 进入 API KeysCreate Key,起个名字并复制密钥
  3. 添加为 GitHub Secret — 名称:ANTHROPIC_API_KEY,值:刚才复制的密钥

价格: Anthropic 没有像 Gemini 那样的长期免费额度,但新账号会获得少量起始信用额度,对于 Richfolio 这种工作量来说,Sonnet 通常每天只花几美分。如需进一步降低成本,可设置 CLAUDE_MODEL=claude-haiku-4-5-20251001(Haiku 层价格显著更低,处理此工作量仍然绰绰有余)。

与 Gemini 组合(多 AI 模式)

如果同时设置了 GEMINI_API_KEYANTHROPIC_API_KEY,Richfolio 每次分析都会并发运行两家服务商并聚合结果:

  • 每个标的的共识操作通过多数表决决定(置信度之和作为平票时的判定依据)
  • 平均置信度显著展示;每家 AI 的分数显示在下方
  • STRONG BUY 要求全体一致 — 任一服务商不同意,共识就最多到 BUY
  • 一致性标签(unanimous / majority / split)作为徽章显示在操作旁

如果某家服务商在运行中失败(限流、额度用尽、网络错误),仍可用的另一家会继续单独运行,这次的邮件/Telegram 也会回退为单 AI 显示。

选择由哪家服务商生成 STRONG BUY 详细分析页

两家服务商都启用时,每个 STRONG BUY 的详细分析页(即”More Details”链接)由单一服务商生成 — 默认按注册顺序选择首个可用的(先 Gemini,再 Claude)。可通过以下方式覆盖:

环境变量 取值 效果
AI_DETAILED_PROVIDER gemini 强制使用 Gemini 生成详细分析(必须已设置 GEMINI_API_KEY)
AI_DETAILED_PROVIDER claude 强制使用 Claude 生成详细分析(必须已设置 ANTHROPIC_API_KEY)
CLAUDE_MODEL 例如 claude-haiku-4-5-20251001 覆盖 Claude 模型(默认:claude-sonnet-4-6)

Telegram 机器人 — 可选

把精简后的摘要发送到你的 Telegram。

创建机器人

  1. 打开 Telegram,搜索 @BotFather
  2. 发送 /newbot
  3. 起一个名字(例如 “Richfolio Brief”)和用户名(必须以 bot 结尾,例如 richfolio_brief_bot)
  4. BotFather 会回复你的机器人 token — 复制下来

获取你的 chat ID

  1. 在 Telegram 中搜索 @userinfobot 并启动
  2. 它会回复你的数字用户 ID — 这就是你的 chat ID

重要: 在运行 Richfolio 之前,先给新创建的机器人发送任意消息(例如 “hi”) — 这一步必须先做,机器人才能给你发送消息。

将以下两项都添加为 GitHub Secret:

  • 名称:TELEGRAM_BOT_TOKEN,值:BotFather 给的 token
  • 名称:TELEGRAM_CHAT_ID,值:你的数字用户 ID

注意: 未设置时,简报会跳过 Telegram。消息是精简后的摘要(不是完整 HTML)。单条消息有 4,096 字符上限,新闻部分必要时会被截断。


社交发布 — 可选

Richfolio 可以把通用的买入信号发布到 X、Facebook、Threads 和 LinkedIn 的公开账号。每个平台都是可选的,在配置之前保持关闭。各平台所需的 Secret:

  • Facebook: FACEBOOK_PAGE_IDFACEBOOK_PAGE_TOKEN
  • Threads: THREADS_USER_IDTHREADS_ACCESS_TOKEN(+ 可选的 THREADS_TOKEN_PAT,用于自动刷新约 60 天过期的令牌)
  • LinkedIn: LINKEDIN_ACCESS_TOKENLINKEDIN_ORG_URN
  • X/Twitter: X_API_KEYX_API_SECRETX_ACCESS_TOKENX_ACCESS_TOKEN_SECRET

注意: 发布内容是通用的 — 不会泄露任何持仓或配置。若未设置,社交发布会被跳过。各平台的逐步设置详见 社交发布


汇总

密钥 必填 服务
RESEND_API_KEY 邮件投递
RECIPIENT_EMAIL 你的邮箱地址
NEWS_API_KEY 新闻头条
GEMINI_API_KEY AI 服务商(Google Gemini)
ANTHROPIC_API_KEY AI 服务商(Anthropic Claude)
TELEGRAM_BOT_TOKEN Telegram 投递
TELEGRAM_CHAT_ID Telegram 投递
FACEBOOK_PAGE_ID / FACEBOOK_PAGE_TOKEN Facebook 主页发布
THREADS_USER_ID / THREADS_ACCESS_TOKEN Threads 发布
THREADS_TOKEN_PAT 自动刷新 Threads 令牌(带 Secrets 写权限的 PAT)
LINKEDIN_ACCESS_TOKEN / LINKEDIN_ORG_URN LinkedIn 主页发布
X_API_KEY / X_API_SECRET / X_ACCESS_TOKEN / X_ACCESS_TOKEN_SECRET X/Twitter 发布
CLAUDE_MODEL 覆盖 Claude 模型(默认:claude-sonnet-4-6)
AI_DETAILED_PROVIDER 强制使用 geminiclaude 生成 STRONG BUY 详细分析页

Richfolio — free, open-source portfolio monitoring. · Privacy Policy

This site uses Just the Docs, a documentation theme for Jekyll.