故障排查
常见问题及解决方法。
“Can only send testing emails to your own email address”
原因: Resend 免费版的限制。
解决: 将 RECIPIENT_EMAIL 设为你注册 Resend 时所用的邮箱;或者在 Resend 上验证一个自定义域名(Dashboard → Domains → Add Domain → 添加 DNS 记录)。
“GEMINI_API_KEY quota: limit 0”
原因: 新创建的 Gemini API 密钥需要几分钟才能激活。部分密钥在未启用计费和 API 之前完全不可用。
解决: 依次尝试以下步骤:
- 等待 5-10 分钟 — 新密钥有时只需要一点时间来激活
- 启用 Generative Language API — 进入 Google Cloud Console → 搜索 “Generative Language API” → 在关联了你 API 密钥的项目里点击 Enable
- 添加账单信息 — 进入 Google AI Studio → Settings → Billing 添加账单信息。你仍然可以选择免费层 — 添加账单只是为了激活密钥,在超出免费额度之前不会被扣费
在此期间,Richfolio 会自动回退到基于缺口的建议 — 简报仍会发送,只是没有 AI 分析。
某个股票代码出现 “fetch failed — internal-error”
原因: Yahoo Finance 对某些股票代码偶尔会出问题(尤其是 BIPC 这类不常见的代码)。
解决: 无需处理。该代码会被跳过,其余流程正常继续。这是 Yahoo Finance 的间歇性问题。
GitHub Actions 显示 Secret 为空
原因: Secret 添加的层级不对。
解决: 确保 Secret 是在仓库级别添加的:Settings → Secrets and variables → Actions → Repository secrets。而不是在环境级别。
没有返回新闻
原因: NewsAPI 免费版只返回最近 24 小时内的文章。某些股票代码(尤其是 ETF 和小盘股)很少出现在新闻头条中。
解决: 这是正常行为。对这些代码,简报仍然能正常运行,只是没有新闻。AI 分析会在建议中标注 “无近期新闻”。
没收到 Telegram 消息
原因: 你还没有主动与你的机器人开启对话。
解决: 打开 Telegram,按用户名搜索你的机器人,给它发送任意消息(例如 “hi”)。Telegram Bot API 要求用户先主动发起对话,机器人才能向你发送消息。之后重新运行 Richfolio 即可。
“Missing config.json” 错误
原因: 项目根目录下不存在 config.json。
解决:
- GitHub Actions: 确保
CONFIG_JSON变量存在并包含有效的 JSON 内容(Settings → Secrets and variables → Actions → Variables 标签页)。 - 本地: 运行
cp config.example.json config.json并填入你的投资组合数据。
简报能跑通但邮件为空或缺少部分内容
原因: 一个或多个 API 密钥缺失或无效。
解决: 检查 .env 文件(本地)或 GitHub Secret(Actions)。简报会根据可用密钥自适应:
- 缺少
NEWS_API_KEY→ 无新闻部分 - 缺少
GEMINI_API_KEY→ 使用基于缺口的建议替代 AI - 缺少
TELEGRAM_BOT_TOKEN→ 仅邮件(无 Telegram)
所有组合都是合法的 — 只有 RESEND_API_KEY 和 RECIPIENT_EMAIL 是必需的。