Yahoo Finance Skill
Get quotes and basic market data from Yahoo Finance (no API key).
When to Use
- - "苹果股价" / "AAPL 价格" / "特斯拉今天涨了多少"
- "港股腾讯" / "0700.HK 行情"
- "茅台股价" / "600519.SS" / "000001.SZ 平安银行"
- Any request for stock quote, current price, or day change
- 美股公司新闻:用
scripts/news.py(需 FINNHUBAPIKEY)
Symbol Format
| Market | Example | Format |
|---|
| US | AAPL, MSFT | Ticker |
| Hong Kong |
0700.HK | Code.HK |
| Shanghai | 600519.SS | Code.SS |
| Shenzhen | 000001.SZ | Code.SZ |
Commands
A-shares / HK quotes (CN/HK, no keys; 腾讯→东财→AkShare)
Use cn_quote.py for A 股 / 港股,依次尝试 腾讯行情 → 东方财富 Push2 → AkShare,直到某个可用就停止。
CODEBLOCK0
- - 无需任何 API key。
- 优先使用腾讯行情 (
qt.gtimg.cn),失败时尝试东方财富 Push2 接口(仅 A 股),再尝试本地安装的 AkShare(如果存在)。
Single or multiple quotes (unified entry: US + A-share/HK)
一个脚本覆盖美股与 A 股/港股:quote.py 会根据 symbol 自动选择数据源——A 股/港股(*.SS / *.SZ / *.HK 等)走 cn_quote(腾讯→东财→AkShare),美股及其他走 Yahoo/Finnhub。Agent 只需调 scripts/quote.py 即可。
CODEBLOCK1
With time range (for previous close / context)
CODEBLOCK2
JSON output
CODEBLOCK3
Company news(新闻:A股/港股 东方财富→AkShare;美股 Finnhub)
A股/港股:依次使用 东方财富 → AkShare,直到某个可用即停(无需 API key,服务器需安装 AkShare)。
美股:使用 Finnhub,需设置 FINNHUB_API_KEY。
CODEBLOCK4
- -
--limit:最多返回条数,默认 10。 - INLINECODE10 /
--to:日期 YYYY-MM-DD(仅美股 Finnhub 使用),默认最近 7 天。 - INLINECODE12 :输出原始 JSON。
- 港股个股新闻:AkShare 对港股个股新闻支持有限,可能返回空,属正常情况。
Range options (quote)
- -
1d — today (default) - INLINECODE14 ,
1mo, 3mo, 6mo, 1y, 2y, INLINECODE20
Path
From the skill directory (e.g. workspace skills/yahoo-finance/):
CODEBLOCK5
From workspace root, use the full path to the skill's scripts/quote.py so the agent can invoke it via exec.
Server 403 (e.g. datacenter IP blocked by Yahoo)
On servers, Yahoo often returns 403. Two options:
- 1. Finnhub fallback (recommended)
Free API key at https://finnhub.io. Set
FINNHUB_API_KEY in the environment (e.g. in
~/.openclaw/.env or your process env). The script will use Finnhub when Yahoo returns 403. US symbols (AAPL, MSFT) work; HK/CN symbols may differ.
- 2. Proxy(代理)
脚本会读取环境变量
HTTPS_PROXY、
HTTP_PROXY,请求会经代理发出,可避免机房 IP 被 Yahoo 封。
优先:用户/进程级(仅影响当前 skill,推荐)
在 gateway 可读到的环境里设置即可,例如 ~/.openclaw/.env 中加入 HTTPS_PROXY=... 和 HTTP_PROXY=...。或当前 shell 测试:export HTTPS_PROXY=http://127.0.0.1:7890 后执行 python3 scripts/quote.py AAPL。
可选:systemd 全局(仅当你用 systemd 跑 gateway 且希望所有请求走代理时)
编辑 /etc/systemd/system/openclaw-gateway.service 在 [Service] 下增加 Environment=HTTPS_PROXY=... / HTTP_PROXY=...,然后 sudo systemctl daemon-reload && sudo systemctl restart openclaw-gateway。注意这会对该服务下所有请求生效。
可选环境变量(仅 quote.py):OPENCLAW_QUOTE_TIMEOUT(默认 12 秒)、OPENCLAW_QUOTE_RETRY_DELAY(单 symbol 顺序时的间隔,默认 0.4 秒)、OPENCLAW_QUOTE_CACHE_TTL(结果缓存秒数,0=关闭)。多 symbol 时默认并行请求以提升性能,可通过 OPENCLAW_QUOTE_PARALLEL=0 关闭;OPENCLAW_QUOTE_MAX_WORKERS(默认 6)控制并行度。失败重试:quote.py 单次 HTTP 请求默认最多重试 2 次(共 3 次),5xx/超时/断线会指数退避;可通过 OPENCLAW_QUOTE_RETRIES=0 关闭。cn_quote.py 与 news.py 同样对单次请求做最多 2 次重试。
Notes
- - Yahoo: real-time/near-real-time for 美股 / 港股 / A 股,但在服务器机房 IP 上可能 403,需要配合代理使用。
- Finnhub fallback: 只保证 美股(AAPL/MSFT 等)有稳定数据;A 股 / 港股 在免费档通常无有效行情或直接 403。
- 建议:港股 / A 股 查询优先走 Yahoo(必要时加 HTTPS_PROXY),美股在 Yahoo 403 时可以用 Finnhub 作为备份。
可改进点 (Possible improvements)
- - 测试:对解析逻辑做单元测试(mock HTTP),便于改版不 regression。
- cn_quote 港股:AkShare 单股接口仅 A 股;港股仍走腾讯/东财,无单股历史接口时保持现状。
Yahoo Finance 技能
从 Yahoo Finance 获取报价和基础市场数据(无需 API 密钥)。
使用场景
- - 苹果股价 / AAPL 价格 / 特斯拉今天涨了多少
- 港股腾讯 / 0700.HK 行情
- 茅台股价 / 600519.SS / 000001.SZ 平安银行
- 任何关于股票报价、当前价格或当日涨跌的请求
- 美股公司新闻:使用 scripts/news.py(需要 FINNHUBAPIKEY)
股票代码格式
0700.HK | 代码.HK |
| 沪市 | 600519.SS | 代码.SS |
| 深市 | 000001.SZ | 代码.SZ |
命令
A股/港股行情(中国/香港,无需密钥;腾讯→东财→AkShare)
使用 cn_quote.py 获取 A 股/港股行情,依次尝试 腾讯行情 → 东方财富 Push2 → AkShare,直到某个可用就停止。
bash
A股
python3 scripts/cn_quote.py 600519.SS
python3 scripts/cn_quote.py 000001.SZ
python3 scripts/cn_quote.py 300750.SZ
港股
python3 scripts/cn_quote.py 0700.HK
python3 scripts/cn_quote.py hk00700
- - 无需任何 API 密钥。
- 优先使用腾讯行情(qt.gtimg.cn),失败时尝试东方财富 Push2 接口(仅 A 股),再尝试本地安装的 AkShare(如果存在)。
单个或多个报价(统一入口:美股 + A股/港股)
一个脚本覆盖美股与 A 股/港股:quote.py 会根据股票代码自动选择数据源——A 股/港股(.SS / .SZ / *.HK 等)走 cn_quote(腾讯→东财→AkShare),美股及其他走 Yahoo/Finnhub。Agent 只需调用 scripts/quote.py 即可。
bash
python3 scripts/quote.py AAPL
python3 scripts/quote.py 0700.HK 9988.HK
python3 scripts/quote.py 600519.SS 000001.SZ
带时间范围(用于前收盘价/上下文)
bash
python3 scripts/quote.py AAPL --range 5d
python3 scripts/quote.py MSFT --range 1mo
JSON 输出
bash
python3 scripts/quote.py AAPL --json
公司新闻(新闻:A股/港股 东方财富→AkShare;美股 Finnhub)
A股/港股:依次使用 东方财富 → AkShare,直到某个可用即停(无需 API 密钥,服务器需安装 AkShare)。
美股:使用 Finnhub,需设置 FINNHUBAPIKEY。
bash
A 股 / 港股
python3 scripts/news.py 600519.SS
python3 scripts/news.py 贵州茅台 --limit 5
python3 scripts/news.py 0700.HK
美股
python3 scripts/news.py AAPL
python3 scripts/news.py MSFT --limit 5 --from 2025-02-01 --to 2025-02-25
- - --limit:最多返回条数,默认 10。
- --from / --to:日期 YYYY-MM-DD(仅美股 Finnhub 使用),默认最近 7 天。
- --json:输出原始 JSON。
- 港股个股新闻:AkShare 对港股个股新闻支持有限,可能返回空,属正常情况。
时间范围选项(报价)
- - 1d — 今日(默认)
- 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y
路径
从技能目录(例如工作区 skills/yahoo-finance/)执行:
bash
python3 scripts/quote.py <股票代码> [--range 1d|5d|1mo|...] [--json]
从工作区根目录执行时,使用技能 scripts/quote.py 的完整路径,以便 Agent 通过 exec 调用。
服务器 403 错误(例如数据中心 IP 被 Yahoo 屏蔽)
在服务器上,Yahoo 经常返回 403。有两种解决方案:
- 1. Finnhub 备用方案(推荐)
免费 API 密钥获取地址:https://finnhub.io。在环境中设置 FINNHUB
APIKEY(例如在 ~/.openclaw/.env 或进程环境中)。当 Yahoo 返回 403 时,脚本将使用 Finnhub。美股代码(AAPL, MSFT)可用;港股/中国股票代码可能有所不同。
- 2. 代理
脚本会读取环境变量 HTTPS
PROXY、HTTPPROXY,请求会经代理发出,可避免机房 IP 被 Yahoo 封禁。
优先:用户/进程级(仅影响当前技能,推荐)
在 gateway 可读到的环境里设置即可,例如 ~/.openclaw/.env 中加入 HTTPSPROXY=... 和 HTTPPROXY=...。或当前 shell 测试:export HTTPS_PROXY=http://127.0.0.1:7890 后执行 python3 scripts/quote.py AAPL。
可选:systemd 全局(仅当你用 systemd 运行 gateway 且希望所有请求走代理时)
编辑 /etc/systemd/system/openclaw-gateway.service 在 [Service] 下增加 Environment=HTTPSPROXY=... / HTTPPROXY=...,然后 sudo systemctl daemon-reload && sudo systemctl restart openclaw-gateway。注意这会对该服务下所有请求生效。
可选环境变量(仅 quote.py):OPENCLAWQUOTETIMEOUT(默认 12 秒)、OPENCLAWQUOTERETRYDELAY(单股票代码顺序请求时的间隔,默认 0.4 秒)、OPENCLAWQUOTECACHETTL(结果缓存秒数,0=关闭)。多股票代码时默认并行请求以提升性能,可通过 OPENCLAWQUOTEPARALLEL=0 关闭;OPENCLAWQUOTEMAXWORKERS(默认 6)控制并行度。失败重试:quote.py 单次 HTTP 请求默认最多重试 2 次(共 3 次),5xx/超时/断线会指数退避;可通过 OPENCLAWQUOTERETRIES=0 关闭。cnquote.py 与 news.py 同样对单次请求做最多 2 次重试。
注意事项
- - Yahoo:提供美股 / 港股 / A 股的实时/近实时数据,但在服务器机房 IP 上可能返回 403,需要配合代理使用。
- Finnhub 备用方案:只保证美股(AAPL/MSFT 等)有稳定数据;A 股 / 港股在免费档通常无有效行情或直接返回 403。
- 建议:港股 / A 股查询优先走 Yahoo(必要时加 HTTPS_PROXY),美股在 Yahoo 返回 403 时可以用 Finnhub 作为备份。
可改进点
- - 测试:对解析逻辑做单元测试(mock HTTP),便于改版不 regression。
- cn_quote 港股:AkShare 单股接口仅 A 股;港股仍走腾讯/东财,无单股历史接口时保持现状。