بنقرة واحدة
finance-query
股票/指数实时行情、K线历史、估值PE/PB、财务三表、技术指标、板块排名、公司信息。覆盖 A股/港股/美股,直接 curl 免费 API,不依赖 web_search。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
股票/指数实时行情、K线历史、估值PE/PB、财务三表、技术指标、板块排名、公司信息。覆盖 A股/港股/美股,直接 curl 免费 API,不依赖 web_search。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | finance-query |
| description | 股票/指数实时行情、K线历史、估值PE/PB、财务三表、技术指标、板块排名、公司信息。覆盖 A股/港股/美股,直接 curl 免费 API,不依赖 web_search。 |
| trigger | A股|股票|上证|深证|指数|行情|大盘|涨跌|收盘|开盘|基金净值|港股|美股|K线|PE|PB|估值|市值|财报|ROE|市盈率|板块|涨幅榜|茅台|腾讯|苹果|AAPL|TSLA|利润表|资产负债|现金流|EPS|技术指标|MA|RSI|MACD|KDJ|均线|成交量|ETF |
一条 curl 命令搞定,不要绕路去 web_search。
curl -s "http://qt.gtimg.cn/q={代码}" -H "User-Agent: Mozilla/5.0" | iconv -f GBK -t UTF-8
代码前缀:sh600519(A股沪) / sz000001(A股深) / hk00700(港股) / usAAPL(美股)
批量:q=sh600519,hk00700,usAAPL
东财 K 线数据最全(A/港/美全覆盖),但需要 Chrome TLS 指纹模拟,普通 curl 会被 RST。用 python3 + curl_cffi:
python3 -c "
from curl_cffi import requests as curl_requests
import json
with curl_requests.Session(impersonate='chrome120') as s:
resp = s.get('https://push2his.eastmoney.com/api/qt/stock/kline/get', params={
'secid': '{SECID}', 'fields1': 'f1,f2,f3,f4,f5,f6',
'fields2': 'f51,f52,f53,f54,f55,f56',
'klt': '101', 'fqt': '1', 'beg': '0', 'end': '20500000', 'lmt': {条数}
}, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36', 'Referer': 'https://quote.eastmoney.com/'}, timeout=10)
data = resp.json()
klines = data.get('data', {}).get('klines', [])
for k in klines[-{条数}:]:
print(k) # 格式: 日期,开,收,高,低,量
"
SECID:1.600519(A股沪) / 0.000001(A股深) / 105.AAPL(美股) / 116.00700(港股)
klt:101(日K) / 102(周K) / 103(月K) / 60(60分) / 15(15分) / 5(5分)
fqt:1(前复权) / 2(后复权)
为什么用 curl_cffi:东财服务器检测 TLS 指纹,普通 curl/requests 会被 RST(返回 Empty reply)。curl_cffi 模拟 Chrome 浏览器指纹绕过检测。
curl -s "https://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol={代码}&scale=240&ma=no&datalen={条数}" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://finance.sina.com.cn"
代码格式同腾讯行情:sh000001(上证) / sz399001(深证) / sh600519(茅台) / sz000001(平安银行)
scale:240(日K) / 60(60分) / 30(30分) / 15(15分) / 5(5分)
返回 JSON 数组:[{"day":"2026-07-09","open":"4031","high":"4073","low":"4027","close":"4043","volume":"60200973800"}, ...]
新浪 K 线无需 TLS 指纹,plain curl 直接可用,但仅支持 A 股。港股/美股 K 线必须走东财 curl_cffi。
python3 -c "
from curl_cffi import requests as curl_requests
import json
with curl_requests.Session(impersonate='chrome120') as s:
resp = s.get('http://ifzq.gtimg.cn/appstock/app/kline/kline', params={'param': '{代码},day,,,{条数},'}, timeout=8)
text = resp.text
if '=' in text:
text = text.split('=', 1)[-1].rstrip(';').strip()
data = json.loads(text)
code_data = data.get('data', {}).get('{代码}', {})
klines = code_data.get('qfqday', code_data.get('day', []))
# 腾讯可能按年份嵌套: {'2025': [], '2026': []} → 展平
if isinstance(klines, dict):
flat = []
for _, v in sorted(klines.items()):
flat.extend(v)
klines = flat
for k in klines[-{条数}:]:
print(','.join(k[:6])) # 日期,开,收,高,低,量
"
代码同腾讯行情前缀:sh600519 / sz000001 / usAAPL
美股通过腾讯接口可能只返回少量数据(<10条),此时自动切东财。
# A股
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_DMSK_NEWINDICATOR&columns=SECURITY_CODE,SECUCODE"eColumns=f115~01~SECURITY_CODE~PE_TTM,f23~01~SECURITY_CODE~PB_NEW_NOTICE&filter=(SECUCODE=%22{代码}.{SH或SZ}%22)&pageNumber=1&pageSize=1&source=HSF10&client=PC" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://data.eastmoney.com/"
# 美股
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_USF10_DATA_MAININDICATOR&columns=ALL&filter=(SECURITY_CODE=%22{TICKER}%22)&pageNumber=1&pageSize=1&sortTypes=-1&sortColumns=REPORT_DATE&source=INTLSECURITIES&client=PC" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://data.eastmoney.com/"
# 港股
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_CUSTOM_HKF10_FN_MAININDICATORMAX&columns=ALL&filter=(SECURITY_CODE=%22{5位代码}%22)&pageNumber=1&pageSize=1&sortTypes=-1&sortColumns=REPORT_DATE&source=F10&client=PC" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://data.eastmoney.com/"
# A股主要财务指标(近10期,含净利润/营收/EPS/ROE)
curl -s "https://datacenter.eastmoney.com/securities/api/data/get?type=RPT_F10_FINANCE_MAINFINADATA&sty=APP_F10_MAINFINADATA&filter=(SECUCODE=%22{代码}.{SH或SZ}%22)&p=1&ps=10&sr=-1&st=REPORT_DATE&source=HSF10&client=PC" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"
# A股资产负债表(归母权益/总资产)
curl -s "https://datacenter.eastmoney.com/securities/api/data/get?type=RPT_F10_FINANCE_GBALANCE&sty=APP_F10_GBALANCE&filter=(SECUCODE=%22{代码}.SH%22)&p=1&ps=10&sr=-1&st=REPORT_DATE&source=HSF10&client=PC" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"
# 美股利润表(持续经营利润)
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_USF10_FN_INCOME&columns=SECUCODE,SECURITY_NAME_ABBR,REPORT_DATE,REPORT_TYPE,STD_ITEM_CODE,AMOUNT&filter=(SECUCODE=%22{TICKER}.O%22)(STD_ITEM_CODE%20in%20(%22004013003%22,%22004013005%22))&pageNumber=1&pageSize=20&sortTypes=-1,1&sortColumns=REPORT_DATE,STD_ITEM_CODE&source=SECURITIES&client=PC" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"
# 美股资产负债表(归母权益)
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_USF10_FN_BALANCE&columns=SECUCODE,SECURITY_NAME_ABBR,REPORT_DATE,REPORT_TYPE,STD_ITEM_CODE,AMOUNT&filter=(SECUCODE=%22{TICKER}.O%22)(STD_ITEM_CODE%20in%20(%22002005999%22,%22002005097%22))&pageNumber=1&pageSize=20&sortTypes=-1,1&sortColumns=REPORT_DATE,STD_ITEM_CODE&source=SECURITIES&client=PC" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"
# 美股现金流量表(经营/投资/筹资现金流)
curl -s "https://datacenter.eastmoney.com/securities/api/data/v1/get?reportName=RPT_USSK_FN_CASHFLOW&columns=SECUCODE,SECURITY_NAME_ABBR,REPORT_DATE,REPORT_TYPE,STD_ITEM_CODE,AMOUNT&filter=(SECUCODE=%22{TICKER}.O%22)&pageNumber=1&pageSize=20&sortTypes=-1,1&sortColumns=REPORT_DATE,STD_ITEM_CODE&source=SECURITIES&client=PC" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://emweb.securities.eastmoney.com/"
iconv -f GBK -t UTF-8——否则中文乱码| 用户意图 | 调用方式 | 数据源 |
|---|---|---|
| 查某股票现价/涨跌 | 腾讯行情(1 次 curl) | qt.gtimg.cn |
| 查 PE/PB/市盈率 | 先试腾讯行情(字段39=PE, 43=PB),不够再用东财估值 | qt.gtimg.cn → datacenter.eastmoney |
| 查 K线/走势/历史 | 东财K线(curl_cffi首选) + generate_chart;新浪兜底(仅A股) | push2his.eastmoney → sina |
| 查 A股财报/ROE/利润 | 东财主财务 | datacenter.eastmoney |
| 查 A股资产负债/净资产 | 东财资产负债表 | datacenter.eastmoney |
| 查 美股利润/净利 | 东财美股利润表 | datacenter.eastmoney |
| 查 美股资产/权益 | 东财美股资产负债表 | datacenter.eastmoney |
| 查 美股现金流 | 东财美股现金流量表 | datacenter.eastmoney |
| 查涨幅榜/板块 | 东财全市场排名 | 82.push2.eastmoney |
| 查板块成分股 | 东财板块成分 | 82.push2.eastmoney |
| 查技术指标(MA/RSI/MACD) | 先拉K线(东财curl_cffi首选),再计算(见技术指标章节) | push2his.eastmoney → 计算 |
| 查美股板块ETF动量 | shell python yfinance | Yahoo Finance |
| 不确定代码 | 东财代码搜索 → 再查 | searchapi.eastmoney |
| 市场 | 前缀 | 示例 |
|---|---|---|
| A股沪市(6/9开头) | sh | sh600519 |
| A股深市(0/3开头) | sz | sz000001 |
| 上证指数 | sh000001 | 深证成指 sz399001,创业板 sz399006 |
| 港股 | hk + 5位 | hk00700(腾讯) |
| 美股 | us + TICKER | usAAPL(苹果), usTSLA(特斯拉) |
| 市场 | 格式 | 示例 |
|---|---|---|
| A股沪(6/9开头) | 1.代码 | 1.600519 |
| A股深(0/3开头) | 0.代码 | 0.000001 |
| 美股 | 105.TICKER | 105.AAPL |
| 港股 | 116.代码 | 116.00700 |
| 市场 | 格式 | 示例 |
|---|---|---|
| A股沪市 | {code}.SH | 600519.SH |
| A股深市 | {code}.SZ | 000001.SZ |
| A股北交所(4/8/920开头) | {code}.BJ | 430047.BJ |
| 美股纳斯达克 | {TICKER}.O | AAPL.O |
| 美股纽交所 | {TICKER}.N | JPM.N |
| 美股AMEX | {TICKER}.A | GOLD.A |
| 港股 | 5位代码 | 00700 |
美股交易所判断:大部分科技股在纳斯达克(.O),金融/工业在纽交所(.N)。不确定时先用 .O 试,无数据再试 .N。
~ 分隔,按索引取值)| 索引 | 含义 | 索引 | 含义 |
|---|---|---|---|
| 1 | 名称 | 3 | 现价 |
| 4 | 昨收 | 5 | 开盘 |
| 31 | 涨跌额 | 32 | 涨跌幅% |
| 33 | 最高 | 34 | 最低 |
| 38 | 换手率% | 39 | PE(TTM) |
| 43 | PB | 44 | 总市值(元) |
响应 JSON → data.klines 数组,每条:"日期,开,收,高,低,量"
参数:klt=101(日) / 102(周) / 103(月) / klt=5(5分钟) / klt=15(15分钟) / klt=60(60分钟)
复权:fqt=1(前复权) / 2(后复权);条数:lmt=N(最近N条)
响应 JSON → result.data 数组,关键字段:
REPORT_DATE: 报告期PARENTNETPROFIT: 归母净利润KCFJCXSYJLR: 扣非净利润TOTALOPERATEREVE: 营业总收入BASIC_EPS: 基本每股收益WEIGHTAVG_ROE: 加权平均ROEMGJZC: 每股净资产YSTZ: 营收同比增长率SJLTZ: 净利润同比增长率TOTAL_ASSETS: 总资产TOTAL_PARENT_EQUITY: 归属母公司股东权益TOTAL_EQUITY: 所有者权益合计TOTAL_LIABILITIES: 负债合计响应 JSON → result.data 数组,字段含义:
REPORT_DATE: 报告期REPORT_TYPE: 年报 / 中报 / 季报STD_ITEM_CODE: 科目代码(见下方映射)AMOUNT: 金额(美元)利润表关键科目:
| STD_ITEM_CODE | 含义 |
|---|---|
004013003 | 持续经营净利润(年报) |
004013005 | 持续经营净利润(季报) |
001013003 | 营业总收入(年报) |
001013005 | 营业总收入(季报) |
资产负债表关键科目:
| STD_ITEM_CODE | 含义 |
|---|---|
002005999 | 归母股东权益(年报) |
002005097 | 归母股东权益(季报) |
002009003 | 总资产(年报) |
002009005 | 总资产(季报) |
# 涨幅前20(改 pz 控制数量,po=1 降序 / po=0 升序看跌幅)
curl -s "http://82.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f12,f14,f3,f24,f25" \
-H "User-Agent: Mozilla/5.0" -H "Referer: http://quote.eastmoney.com/center/gridlist.html"
字段:f12=代码, f14=名称, f3=今日涨跌%, f24=60日涨幅%, f25=年初至今%
curl -s "http://82.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=500&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:90+t:2&fields=f12,f14,f3" \
-H "User-Agent: Mozilla/5.0" -H "Referer: http://quote.eastmoney.com/"
返回:f12=板块代码(BK0xxx), f14=板块名, f3=涨跌幅%
# 把 fs 改为 b:{板块代码}
curl -s "http://82.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=50&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=b:{BK0xxx}&fields=f12,f14,f3" \
-H "User-Agent: Mozilla/5.0" -H "Referer: http://quote.eastmoney.com/"
# 一行 python 查 11 大板块 ETF 近期涨跌
python3 -c "
import yfinance as yf
etfs = {'XLK':'科技','XLV':'医疗','XLF':'金融','XLY':'消费','XLC':'通信','XLI':'工业','XLE':'能源','XLP':'必需','XLU':'公用','XLRE':'地产','XLB':'材料'}
for sym,name in etfs.items():
t = yf.Ticker(sym)
h = t.history(period='5d')
if len(h)>=2:
chg = (h['Close'].iloc[-1]/h['Close'].iloc[0]-1)*100
print(f'{name}({sym}): {chg:.1f}%')
"
注意:需要
pip install yfinance,首次使用可能需安装。如果 yfinance 不可用,改用东财美股 K线接口查 ETF。
用户问 MA/RSI/KDJ/MACD 等技术指标时,先拉 K 线数据(东财 curl_cffi 首选),再用 python 计算:
python3 -c "
from curl_cffi import requests as curl_requests
import json
# 步骤 1:拉取 K 线(东财,至少 120 条用于计算 MA60/MACD)
with curl_requests.Session(impersonate='chrome120') as s:
resp = s.get('https://push2his.eastmoney.com/api/qt/stock/kline/get', params={
'secid': '{SECID}', 'fields1': 'f1,f2,f3,f4,f5,f6',
'fields2': 'f51,f52,f53,f54,f55,f56',
'klt': '101', 'fqt': '1', 'beg': '0', 'end': '20500000', 'lmt': 120
}, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36', 'Referer': 'https://quote.eastmoney.com/'}, timeout=10)
klines = resp.json().get('data', {}).get('klines', [])
# 步骤 2:解析并计算指标
closes = [float(k.split(',')[2]) for k in klines] # 收盘价在第3列
highs = [float(k.split(',')[3]) for k in klines]
lows = [float(k.split(',')[4]) for k in klines]
volumes = [float(k.split(',')[5]) for k in klines]
# MA(移动平均线)
def ma(arr, n): return sum(arr[-n:])/n if len(arr)>=n else None
print(f'MA5={ma(closes,5):.2f}, MA10={ma(closes,10):.2f}, MA20={ma(closes,20):.2f}, MA60={ma(closes,60):.2f}')
# RSI(相对强弱指标,14日)
gains, losses = [], []
for i in range(1, min(15, len(closes))):
diff = closes[-i] - closes[-i-1]
gains.append(max(diff, 0))
losses.append(max(-diff, 0))
avg_gain = sum(gains)/14 if gains else 0
avg_loss = sum(losses)/14 if losses else 1
rsi = 100 - 100/(1+avg_gain/avg_loss) if avg_loss else 100
print(f'RSI14={rsi:.1f}')
# MACD(12/26/9)
def ema(arr, n):
k = 2/(n+1)
result = arr[0]
for v in arr[1:]: result = v*k + result*(1-k)
return result
ema12 = ema(closes[-26:], 12)
ema26 = ema(closes[-26:], 26)
dif = ema12 - ema26
print(f'MACD_DIF={dif:.3f}')
print(f'当前价={closes[-1]:.2f}, 最新量={volumes[-1]:.0f}')
"
常见技术信号判断:
# 5分钟K线(A股/港股)
curl -s "http://ifzq.gtimg.cn/appstock/app/kline/mkline?param=sh600519,m5,,320" \
-H "User-Agent: Mozilla/5.0" -H "Referer: http://stockhtm.finance.qq.com"
参数:m5(5分钟) / m15(15分钟) / m30(30分钟) / m60(60分钟),末尾数字为条数
curl -s "https://searchapi.eastmoney.com/api/suggest/get?input={关键词}&type=14&token=D43BF722C8E33BDC906FB84D85E326E8"
拿到 K 线数据后,调 generate_chart:
{
"type": "line",
"data": {
"labels": ["日期1", "日期2", "..."],
"datasets": [{"label": "股票名", "data": [价格1, 价格2], "borderColor": "rgb(255,99,132)", "fill": false}]
},
"options": {"plugins": {"title": {"display": true, "text": "XXX 近N日走势"}}}
}
# 实时行情(备选)
curl -s -H "Referer: http://finance.sina.com.cn" "http://hq.sinajs.cn/list=sh000001" | iconv -f GBK -t UTF-8
# K 线(仅 A 股,curl_cffi 不可用时的兜底)
curl -s "https://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=sh000001&scale=240&ma=no&datalen=30" \
-H "User-Agent: Mozilla/5.0" -H "Referer: https://finance.sina.com.cn"
✅ 正确流程:
1. 判断用户要什么(行情/K线/估值/财务/板块/技术指标)
2. 按「路由逻辑」表选对应 API
3. 一次 shell(python3/curl) 搞定(技术指标额外加一步计算)
4. 解析响应,直接回答
❌ 绕路(禁止):
1. web_search("茅台股价")(搜索引擎拿不到实时行情)
2. web_fetch("https://finance.sina.com.cn/...")(网页需 JS 渲染)
3. 多次 curl 同一个 API(批量查询用逗号拼接一次搞定)
4. 忘记 iconv 导致乱码后再重试(第一次就要带)
5. 用普通 curl 请求东财 K 线(会被 TLS 指纹检测 RST,必须用 curl_cffi)
铁律:
ut 和 token 是公开固定值,直接用.O(纳斯达克),无数据再试 .N(纽交所)activate_tools: shell, generate_chart
消息渠道接入配置:飞书 WebSocket 长连接配置与使用说明。未来支持微信、Telegram 等渠道。
飞书云文档(Docx / Wiki 文档):读取和编辑飞书文档内容。当用户给出文档 URL 或 token,或需要查看、创建、编辑文档、插入或下载文档图片附件时使用。文档中嵌入的电子表格、多维表格、画板,先用本 skill 提取 token 再切到对应 skill。当用户给出 doubao.com 的 /docx/ 或 /wiki/ URL/token 时,也应直接使用本 skill;路由依据是 URL 路径模式和 token,而不是域名。不负责文档评论管理,也不负责表格或 Base 的数据操作。
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件(支持大文件分片下载)、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。
Use when first setting up lark-cli, running auth login, switching user/bot identity (--as), handling permission denied or scope errors, needing to update lark-cli, or seeing _notice in JSON output.
微信读书助手 — 搜索书籍、管理书架、查看笔记划线、阅读统计、发现推荐好书。
对代码变更做审查:识别 bug、安全漏洞、性能问题。P0 必须修复写评论,P1 建议性评论,P2 只在总结里一句带过。