Stock Query

v2.4.1

查询全球主要市场股票实时行情(A 股、港股、美股、ETF、场外基金、主要指数),支持批量查询、自选市值计算与个股历史K线。 同时支持在用户显式指令下管理本地 portfolio.csv 自选股文件(增/删/改/查);文件仅含股票代码、名称、数量、自选价格,禁止存放账户凭证或密钥。 需要 shell 权限执行:cu...

1· 450·1 current·1 all-time
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
The name/description (stock market queries + local portfolio CSV management) matches the included scripts: sq.sh (fetches market data), fmt.sh (formatting), portfolio.sh (CSV management). The skill requires network access to market-data hosts and shell utilities (curl, iconv, python3) which are appropriate. Minor inconsistency: the top registry summary lists no required binaries while skill.yaml and SKILL.md list curl/iconv/python3 — verify runtime environment provides these binaries.
Instruction Scope
SKILL.md and the scripts limit network calls to specific market-data hosts and restrict file I/O to portfolio.csv in fixed skill directories. Script logic shows only reading/writing the CSV and fetching data from the declared APIs. The SKILL.md also declares and enforces (by design) silence of internal process messages and that portfolio.csv must not contain credentials.
Install Mechanism
No install spec (instruction-only / scripts bundled). No remote downloads or extract steps. Scripts live in the skill bundle and will be executed; risk is limited to those files being run locally. This is a low install-risk pattern, but you should still review bundled scripts (they are provided).
Credentials
The skill requests no environment variables or external credentials. It does read HOME to locate portfolio.csv (expected). The number and type of privileges (network to specific hosts, ability to run shell commands) are proportionate to market-data querying and local CSV management. There are no requests for unrelated secrets.
Persistence & Privilege
always:false and no evidence of modifying other skills or global agent config. The skill writes only to its own portfolio.csv (in skill-specific paths) when explicitly commanded. Autonomous invocation is allowed (platform default) but not flagged by itself.
Assessment
This skill appears to do what it claims: fetch market data from the listed providers and manage a local portfolio.csv. Before installing: (1) confirm your environment has curl, iconv, and python3 (skill.yaml requires these); (2) inspect the bundled scripts (they are included) — they are the code that will run; (3) ensure you keep portfolio.csv free of any passwords/API keys (the skill warns against this and only expects code/name/qty/cost); (4) note a minor metadata mismatch: the registry summary omitted required binaries while skill.yaml lists them — verify the runtime provides them to avoid failures; (5) if you require stricter network controls, restrict outbound access to only the declared hosts or run the skill in a sandbox. If you want higher assurance, run the scripts manually on sample inputs to observe behavior before granting the skill regular use.

Like a lobster shell, security has layers — review code before you run it.

chinavk972ha7zdxr66f4a205vrfdt59836ej1etfvk972ha7zdxr66f4a205vrfdt59836ej1financevk972ha7zdxr66f4a205vrfdt59836ej1fundvk972ha7zdxr66f4a205vrfdt59836ej1latestvk974v06eedtnzymfgy3jwp2b7n8440a3stockvk972ha7zdxr66f4a205vrfdt59836ej1

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

全球股票/ETF/基金/指数 实时价格查询

权限与操作范围

权限声明用途限制
networkscripts/sq.sh 内部调用行情 API仅限 qt.gtimg.cnhq.sinajs.cnpush2.eastmoney.comweb.ifzq.gtimg.cnpush2his.eastmoney.comfundgz.1234567.com.cnapi.fund.eastmoney.com 七个数据源,不发送用户个人数据
shell执行 curliconvgrepawkmktemp仅操作 portfolio.csv;不执行任意命令

文件访问: 本 skill 仅在用户显式指令下读写 portfolio.csv 一个文件,固定在默认安装目录(~/.openclaw/workspace/skills/stock-query/~/.claude/skills/stock-query/)下查找,无需配置任何环境变量。历史数据通过网络实时获取,不写本地文件。

自动触发范围: 文件操作(Command 1)不会自动触发,仅在用户明确发出增/删/改/查 portfolio 指令时执行。

⚠️ 凭证安全: portfolio.csv 仅应包含股票代码、名称、数量、自选价格。禁止存放账户密码、API 密钥、Token 或任何认证凭证。

前置依赖

工具说明
scripts/sq.sh行情查询 CLI,内部使用 curl + iconv
scripts/fmt.sh格式化输出工具,由 sq.sh --format 调用,依赖 python3,输出人类可读的 Markdown 表格

支持的市场与标的

市场代码格式示例
沪/深市股票、ETF、指数6 位数字601991510300000001
港股≤5 位数字(自动补零)7000070009988
美股英文 tickerAAPLTSLABIDU
美股指数.DJI / .IXIC / .SPX.DJI
场外基金6 位数字014978110011

工作流程

Step 0: 意图识别与 Command 路由

Meta 命令(最高优先级):输入为 version-v--versionhelp-h--help(大小写不敏感) → 直接输出版本/帮助信息,不执行后续步骤

version 输出:

stock-query v2.4.1

help 输出:

stock-query v2.4.1 — 全球股票/ETF/基金/指数实时行情查询

用法:
  /stock-query <代码> [代码2 ...]   查询一个或多个标的实时行情
  /stock-query <代码> 历史          查询个股历史K线(默认近30个交易日)
  /stock-query version              显示版本号
  /stock-query help                 显示本帮助

支持的市场:
  A股(沪/深)  6位数字,如 601991 000001
  港股          5位数字,如 00700 09988
  美股          英文ticker,如 AAPL TSLA NVDA
  美股指数      .DJI  .IXIC  .SPX
  ETF           6位数字,如 510300 159915
  场外基金      6位数字,如 014978

常用示例:
  /stock-query AAPL
  /stock-query 00700 09988
  /stock-query AAPL 00700 601991 510300
  /stock-query 600519 近60天日K
  /stock-query TSLA 周K 最近20周

作者:asfamilybank · https://github.com/asfamilybank/stock-query

Command 1:Portfolio 文件管理:含操作词(添加/新增/删除/移除/修改/查看/列出)+ 对象词(自选股/持仓/portfolio/watchlist),或明确指令如"把 AAPL 加到自选股" → 直接执行 Command 1,不进入 Command 2/3 流程

Command 3:历史行情查询:含关键词(历史/历史数据/历史行情/历史价格/历史走势/K线/日K/周K/月K) → 直接执行 Command 3,不进入 Command 2 流程

Command 2:行情查询(默认):其余所有输入 → 进入 Command 2 流程(执行 Step 1–6)


静默执行原则(Claude 对话输出约束)

⛔ 严禁向用户输出任何中间推理或过程信息。 这是最高优先级约束,覆盖所有步骤。

本约束仅适用于 Claude 的对话文本输出。scripts/sq.sh stdout 仅输出结构化数据供 Claude 内部消费:行情/基金命令输出 JSON 数组,pfile 命令输出文件绝对路径或控制令牌 NOT_FOUND;stderr 输出错误/用法提示。scripts/fmt.sh 是格式化渲染层,接收 sq.sh 的 JSON 输出,输出供用户直接查看的 Markdown 表格(含涨跌 emoji、CJK 对齐、均线列);其 stdout 为最终展示内容,非过程日志。两个脚本均不向用户界面打印任何过程信息。

以下内容绝对禁止出现在回复中:

  • 市场/类型判断(如"014978 是场外基金")
  • 数据源切换说明(如"腾讯接口返回空,切换至东方财富:")
  • 文件路径查找过程
  • 任何形式的"正在..."、"切换..."、"尝试..."等过程性文字

唯一允许的输出: 最终结果表格,或无法查询时的错误提示。


Command 1: Portfolio 文件管理

所有增删改查操作必须通过 Bash 工具执行实际命令,禁止依赖会话记忆。未执行命令不得声称操作已完成。

文件定位(每次进入 Command 1 必须首先执行)

PFILE=$(bash scripts/sq.sh pfile)
echo "$PFILE"
  • 输出 NOT_FOUND → 立即向用户输出下方创建引导,停止执行,不得创建任何替代文件
  • 否则将 $PFILE 用于所有后续操作

portfolio.csv 不存在时,引导用户创建:

未找到自选股文件。请执行以下步骤创建:

1. 复制模板文件(路径替换为你的实际安装目录):
   cp ~/.openclaw/workspace/skills/stock-query/assets/portfolio.csv \
      ~/.openclaw/workspace/skills/stock-query/portfolio.csv

2. 编辑文件,填入你的自选股信息。

CSV 文件格式(参考 assets/portfolio.csv):

代码,名称,数量,自选价格
601991,大唐发电,1000,4.00   # 含数量与参考价,输出浮盈亏
014978,华安纳指100C,10000,  # 自选价格留空:只查行情
AAPL,,50,220.00             # 名称留空:自动从接口获取
000300,,0,                  # 数量为 0:纯自选

grep -v '^#' "$PFILE" | tail -n +2

格式化为表格展示,不查询实时行情。如需实时价格,使用 Command 2。

  1. bash scripts/sq.sh get <code> 获取标的名称
  2. 执行:
if grep -q "^{code}," "$PFILE" 2>/dev/null; then
  echo "DUPLICATE:{code}"
else
  echo "{code},{name},{shares},{cost}" >> "$PFILE" && echo "ADDED:{code},{name},{shares},{cost}"
fi
  1. ADDED:... → 展示添加结果;DUPLICATE:{code} → 询问是否改为修改操作

  1. bash scripts/sq.sh get <code> 获取最新名称
  2. 执行:
OLD=$(grep "^{code}," "$PFILE")
if [ -z "$OLD" ]; then
  echo "NOT_FOUND:{code}"
else
  NEW="{code},{name},{shares},{cost}"
  tmp=$(mktemp)
  awk -F',' -v c="{code}" -v n="$NEW" \
    'BEGIN{OFS=","} $1==c{print n;next}{print}' "$PFILE" > "$tmp" && mv "$tmp" "$PFILE"
  echo "BEFORE:$OLD"
  echo "AFTER:$NEW"
fi
  1. 展示修改前后 diff;NOT_FOUND:{code} → 提示未找到

DEL=$(grep "^{code}," "$PFILE")
if [ -z "$DEL" ]; then
  echo "NOT_FOUND:{code}"
else
  tmp=$(mktemp)
  grep -v "^{code}," "$PFILE" > "$tmp" && mv "$tmp" "$PFILE"
  echo "DELETED:$DEL"
fi

DELETED:... → 展示删除结果;NOT_FOUND:{code} → 提示未找到


Command 2: 行情查询

Step 1: 解析用户输入

detail_mode 检测: 若用户消息含以下关键词,设 detail_mode = true,在 Step 3 输出详细表格:

  • 中文:详细、详情、详细信息、更多信息、全部信息、完整信息
  • 英文:detail、details、verbose、full

从用户消息中提取标的代码,支持以下形式:

  • 6 位纯数字 → A 股(股票/ETF/指数/基金)
  • ≤5 位纯数字 → 港股,自动补零(700 → 00700)
  • 英文字母或英文+数字 → 美股 ticker
  • 中文/英文名称 → 匹配下表常见标的;无法确定时向用户确认

常见标的速查:

A 股:

  • 黄金ETF → 518880 / 红利低波ETF → 512890 / 沪深300ETF → 510300
  • 卫星ETF → 563230 / 创业板ETF → 159915 / 中证500ETF → 510500
  • 上证指数 → 000001 / 深证成指 → 399001 / 创业板指 → 399006
  • 沪深300 → 000300 / 上证50 → 000016 / 中证500 → 000905 / 中证1000 → 000852

港股:

  • 腾讯 → 00700 / 阿里巴巴 → 09988 / 美团 → 03690 / 小米 → 01810
  • 比亚迪 → 01211 / 恒生指数 → HSI

美股:

  • 苹果 → AAPL / 谷歌 → GOOG / 特斯拉 → TSLA / 英伟达 → NVDA
  • 微软 → MSFT / 亚马逊 → AMZN / 百度 → BIDU / 阿里巴巴 → BABA
  • 哔哩哔哩 → BILI / 拼多多 → PDD
  • 道琼斯 → .DJI / 纳斯达克 → .IXIC / 标普500 → .SPX

Step 2: 查询并格式化输出

Step 2A: 执行命令(不得省略 --format 参数,单支/批量/任意市场均适用)
  detail_mode = false → bash scripts/sq.sh get <code1> [code2 ...] --format table
  detail_mode = true  → bash scripts/sq.sh get <code1> [code2 ...] --format detail

Step 2B: 将命令的 stdout 原样作为回复返回
  ⛔ 不得解析 JSON 自行构建表格
  ⛔ 不得修改 emoji 字符(A股/港股:涨🔴跌🟢;美股:涨🟩跌🟥)
  ⛔ 不得添加、删除或重排列

⛔ 特别注意:港股跌幅用 🟢(非 🔴)。 A股、港股均遵循中国市场惯例:上涨 🔴,下跌 🟢,平盘 ⚪。命令输出已正确处理,勿覆盖。

Step 4: 自选市值计算(可选)

4a. 从 portfolio 文件加载

当用户指令涉及自选股(如"查我的自选股""看下自选股"),先定位文件再批量查询:

PFILE=$(bash scripts/sq.sh pfile)
  • 输出 NOT_FOUND → 立即输出创建引导(见 Command 1),停止执行
  • 否则读取文件,提取所有代码后用 sq get 批量查询

执行步骤(严格按序):

Step A: 读取全部条目
  codes_all      = 文件中所有非注释、非表头行
  codes_position = codes_all 中数量 > 0 的条目
  codes_watch    = codes_all 中数量 = 0 或空的条目

Step B: 批量查询
  bash scripts/sq.sh get <codes_all 中所有代码>

Step C: 输出自选市值表(若 codes_position 非空)
  横向宽表格:代码/名称/数量/自选价格/现价/市值/浮盈亏/盈亏比

Step D: 输出自选行情表(若 codes_watch 非空)← 必须执行,不得省略
  标题"自选行情",简表:代码/名称/现价/涨跌幅

⚠️ Step D 不得跳过。 数量=0 的条目不进市值表,但必须出现在 Step D。

输出示例:

| 代码   | 名称     | 数量    | 自选价格 | 现价    | 市值      | 浮盈/亏      | 盈亏比      |
|--------|---------|--------|---------|--------|----------|------------|------------|
| 601991 | 大唐发电 | 1000股 | 4.00    | 4.08   | 4,080    | 🔴 +80     | 🔴 +2.00% |
| AAPL   | 苹果     | 50股   | 220.00  | 246.63 | 12,332   | 🟩 +1,332  | 🟩 +12.10%|

自选行情
| 代码   | 名称    | 现价     | 涨跌幅      |
|--------|--------|---------|------------|
| 000300 | 沪深300 | 4509.24 | 🔴 +0.38% |
| .DJI   | 道琼斯  | 45216.14| 🟩 +0.11% |

4b. 用户手动提供自选信息

sq get 查询后,必须使用横向宽表格,禁止使用竖向键值对格式

| 代码   | 名称      | 数量   | 自选价格 | 最新价  | 市值       | 浮盈/亏        | 盈亏比         |
|--------|----------|--------|---------|--------|-----------|--------------|--------------|
| 600519 | 贵州茅台  | 100股  | 1680.0  | 1725.0 | 172,500   | 🔴 +4,500    | 🔴 +2.68%   |
| AAPL   | 苹果      | 50股   | 220.0   | 251.49 | 12,574.50 | 🟩 +1,574.50 | 🟩 +14.31%  |

汇总行:

📊 自选合计:市值 185,074.50 | 总参考成本 179,000 | 浮盈 +6,074.50(+3.39%)

浮盈亏 emoji 遵循市场规则(A股/港股:盈利🔴亏损🟢;美股:盈利🟩亏损🟥)。跨市场汇总时提示用户各币种分开统计。

CSV 解析规则:# 开头为注释,第一个非注释行为表头,名称列为空时从查询结果自动填充,自选价格为空时浮盈亏显示


Command 3: 历史行情查询

意图解析

从用户输入中提取以下参数(均可省略,使用默认值):

标的代码:同 Step 1 规则。

周期(默认 day):

用户表述参数
日/天/日K/daily--period day
周/周K/weekly--period week
月/月K/monthly--period month

数量/区间

  • "近N天/周/月"、"最近N条"、"过去N" → --count N
  • "从 YYYY-MM-DD 到 YYYY-MM-DD"、"2024年1月到3月" → --start ... --end ...(转为 YYYY-MM-DD 格式)
  • 未指定 → 默认 30 条

复权(默认前复权):

用户表述参数
前复权(默认)--fq pre
后复权--fq post
不复权/原始价格--fq none

数据获取与格式化输出

bash scripts/sq.sh hist <code> [--period day|week|month] [--count N] [--start YYYY-MM-DD] [--end YYYY-MM-DD] [--fq pre|post|none] --format table

直接执行上述命令,将输出原样呈现给用户。--format table 已内置所有格式化逻辑:倒序 K 线表格、标题行(标的/周期/复权/条数)、区间统计、emoji 涨跌规则、成交量单位换算。


交易时间参考

市场交易时段(当地时间)时区
A 股/ETF工作日 09:30-11:30, 13:00-15:00UTC+8
场外基金估值工作日 09:30-15:00UTC+8
港股工作日 09:30-12:00, 13:00-16:00UTC+8
美股工作日 09:30-16:00(北京时间 夏令时 21:30-04:00)UTC-4/-5
QDII 基金净值 T+2 至 T+7 公布

Files

6 total
Select a file
Select a file to preview.

Comments

Loading comments…