监控股票持仓价格异动,当涨跌幅、成交量或价格突破阈值时,通过邮件和/或 Sonos 语音播报发出实时提醒。
curl、jq 已安装SMTP_HOST、SMTP_PORT、SMTP_USER、SMTP_PASS、ALERT_EMAIL_TO`sonos CLI 可用在 scripts/config.json 中设定持仓和规则:
{
"watchlist": [
{
"symbol": "AAPL",
"name": "Apple Inc.",
"alert_pct": 3.0,
"alert_price_above": null,
"alert_price_below": 170.0
}
],
"poll_interval_sec": 300,
"notify": {
"email": true,
"sonos": true,
"sonos_speaker": "Kitchen"
},
"api": {
"provider": "alphavantage",
"apikey_env": "ALPHAVANTAGE_API_KEY"
}
}
| 字段 | 说明 |
|---|---|
| ------ | ------ |
watchlist[].alert_pct | 涨跌幅超此值触发(百分比,如 3.0 表示 ±3%) |
watchlist[].alert_price_above | 价格上穿此值触发(null 不启用) |
watchlist[].alert_price_below | 价格下穿此值触发(null 不启用) |
poll_interval_sec | 轮询间隔秒数 |
notify.email | 是否启用邮件提醒 |
notify.sonos | 是否启用 Sonos 语音播报 |
notify.sonos_speaker | Sonos 设备名称 |
config.json,获取持仓列表和告警规则poll_interval_sec 间隔持续监控# 单次检查
bash scripts/stock_alert.sh --once
# 持续轮询
bash scripts/stock_alert.sh
# 指定自定义配置
bash scripts/stock_alert.sh --config /path/to/config.json
标准输出打印检查结果,告警信息同时发送到配置的通知渠道:
[2026-05-12 08:00:01] AAPL $182.50 +4.2% ⚠️ 涨幅超阈值(3.0%)
[2026-05-12 08:00:01] → 邮件已发送至 user@example.com
[2026-05-12 08:00:01] → Sonos 播报: Kitchen
脚本使用 curl 调用 SMTP 发送邮件,需配置环境变量:
| 变量 | 说明 |
|---|---|
| ------ | ------ |
SMTP_HOST | SMTP 服务器地址 |
SMTP_PORT | SMTP 端口(如 587) |
SMTP_USER | 发件邮箱 |
SMTP_PASS | 邮箱密码/应用专用密码 |
ALERT_EMAIL_TO | 收件邮箱 |
依赖 sonos CLI(参见 sonoscli 技能),播报内容示例:
> "AAPL 当前价格 182.50 美元,涨幅 4.2%,超过阈值 3%"
| 错误 | 处理 |
|---|---|
| ------ | ------ |
| API 限流 (429) | 等待后重试,最多 3 次 |
| API Key 缺失 | 打印警告并跳过行情拉取 |
| SMTP 连接失败 | 降级为仅控制台输出 |
| Sonos 设备不可达 | 降级为仅控制台输出,不阻断其他通知 |
poll_interval_sec 不低于 300api.provider 为其他数据源,只需修改 fetch_quote 函数共 3 个版本