小昭查股票
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-f3srqmwa--xiaozhao-stock.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-f3srqmwa/xiaozhao-stock。小昭查股票——输入股票名称或代码,输出一张精美图片卡片(实时行情+巴菲特存在价值+近期重大事件+已持有/未持有策略+免责声明)。触发词:查股票、查XX股票、XX现在多少钱、小昭查股票、股票卡片。
阅读全文 (展开查看完整说明)
概述
产品定位(2026-08-13老板定·铁律):卖"研究服务",不卖"判断承诺"——提供发生了什么(事实)+分析框架(逻辑)+证据分级+验证点+风险提示;不给"会涨/能买/该卖"判断承诺;所有输出带"研究排序,不构成买卖指令"(决策责任在用户,合规保护)。
设计依据(2026-08-16老板定): 按《通用 Skill 开发实战教程》(北风Study 2026-07-23)五阶段标准重构:需求分析→数据策略→接口规范→输出标准化→自检清单。
客户安装本skill后,对Agent说"查一下远光软件"或"查002063",Agent按本指南完成全部流程。图片输出走本地V2模板渲染(Chrome截图→PNG,失败降级HTML→Markdown),行情走多源容灾(腾讯/新浪/东财),零外部IP调用(腾讯合规)。
⚠️ 执行铁律(2026-08-16老板定·客户反馈教训):估值/评分/卡片数据必须由内置代码产出——第一步必须运行 gen_card.py(解释器探测:
python3 --version失败→python --version→py --version,哪个能用用哪个跑xxx gen_card.py <代码>),禁止Agent自行调用API计算或编造数据!输出以代码结果为准。 原因:内置代码含完整逻辑(真DCF/年报优先/增长钳制/总股本换算/多源容灾),Agent自行计算必然走样(曾有Agent算出"正常化~峰值DCF"错误口径)。⚠️ 运行前依赖检查(2026-08-17·零依赖化根治):行情/事件/卡片 用纯标准库(urllib)——裸Python零依赖即可出卡;requests 可选(有→完整财务估值;无→行情必出+估值标"待核实")。无需再强制 pip install。
查询范围(2026-08-17老板确认):支持A股个股 + ETF/基金/可转债行情(输入代码如 002063 / 510300 / 159915 / 110088 / 123188 / 110022)。个股出完整卡片(行情+巴菲特估值+事件+策略);ETF/可转债/基金出行情卡(无个股估值,价值区如实标注"不适用/待核实")。⚠️场外基金代码可能与场内品种重叠(如110022既是易方达消费行业也是沪市转债段),查场外基金请注明"基金"二字引导。
输出(SKILLHUB过审版):运行后生成 HTML卡片文件(CSS精美页面,浏览器打开即卡片,可截图/打印)——零外部服务零浏览器依赖。有Chrome的Agent可自行截图转PNG。
安装(零依赖·2026-08-17根治):无需强制安装——裸Python直接跑
python3 gen_card.py <代码>(或python gen_card.py)即出行情卡;如能pip install requests则获得完整财务估值(可选增强)。
⚡ 执行流程(Agent 唯一正确做法——禁止偏离,2026-08-17强化)
- 先探测 Python 解释器(★2026-08-17 客户环境差异):
- 依次运行
python3 --version→ 失败则python --version→ 再失败则py --version(Windows Python Launcher) - 哪个命令能用,就用它跑脚本(例:
python3 gen_card.py <代码>/python gen_card.py <代码>/py gen_card.py <代码>) - 注意:本 SKILL 需要 Python 3.6+(脚本用 f-string),python2 不可用
- 依次运行
- 必须运行:
<探测到的python> gen_card.py <代码>(代码=用户给的6位代码,如 510300) - 必须读出并原样展示脚本输出的「交付数据行」(格式:
===== 交付数据 ===== 名称 价格 涨跌% | 价值≈X | 判定 | 事件N条) - 必须把输出文件(
card_代码_日期.html或.png)展示给用户——这是唯一可交付卡片 - 禁止:自行调用行情API、自行写HTML模板/图片、编造数据、跳过 gen_card.py
- 若 gen_card.py 报错 → 把报错原文返回,不得自行"修复"或换别的方式出卡
- 卡片上无数据=未运行 gen_card.py=违规——用户要求重查时必须重新运行脚本
一、需求分析(翻译官思维)
1.1 输入参数补全(隐形参数拆解)
用户一句话(如"查一下远光")背后有4个维度必须补全:
| 维度 | 用户没说清 | 系统必须确定 | 补全策略 |
|---|---|---|---|
| 主体 | "远光" | 6位代码 002063 + 市场前缀 sz/sh/bj | 内置名称→代码池;不在池内:名称直查腾讯API(支持名称)或提示候选 |
| 时间 | 未指定 | 数据截至时间(收盘/盘中) | 取腾讯行情实时返回时间戳,标注"数据截至 YYYY-MM-DD HH:MM" |
| 标准 | 未指定 | 价值判断规则(低估/合理/偏高) | 安全边际=(内在价值粗估-现价)/现价:≥15%低估、≤-10%偏高、中间合理 |
| 范围 | 未指定 | 事件取最近3条、研报一致预期EPS | 默认值固定,允许用户追加(如"只要公告") |
名称→代码池:远光软件=sz002063|三维天地=sz301159|用友网络=sh600588|中控技术=sh688777|宝信软件=sh600845|东方国信=sz300166|汉得信息=sz300170|三一重工=sh600031|海尔智家=sh600690|比亚迪=sz002594|普元信息=sh688118
前缀规则:6/9开头=sh(沪市),0/3开头=sz(深市),4/8/92开头=bj(北交所)
1.2 规则优先级(会话 > 用户 > 系统)
- 会话级(最高):用户本次对话临时指定(如"按5%算安全边际")→ 本次生效
- 用户级(中):用户个人偏好(如"只看分红事件")→ 长期保存
- 系统级(兜底):本SKILL默认标准(安全边际阈值15%/-10%)
⚠️ 永远不写死阈值——阈值必须走可配置逻辑链(改 SKILL.md 常量或会话参数即可调)。
二、数据策略(架构师思维)
2.1 数据源分层
| 层 | 数据 | 来源(域名,合法) | 用途 |
|---|---|---|---|
| 主表 | 实时行情:价格/涨跌幅/市值/PE | 腾讯 qt.gtimg.cn(GBK) | 卡片必填 |
| 备源 | 同行情(容灾) | 新浪 hq.sinajs.cn(需Referer)→ 东财 push2.eastmoney.com | 主源挂时顶上 |
| 维表 | 机构一致预期EPS/评级 | 东财研报 reportapi.eastmoney.com + 同花顺 basic.10jqka.com.cn(stock_valuation.py) | 价值粗估+DCF增长率 |
| 维表 | 近期公告事件 | 东财公告 np-anotice-stock.eastmoney.com | 事件区 |
| 财务 | 财报三表(巴菲特DCF核心) | 新浪 quotes.sina.cn(fzb资产负债表/lrb利润表/llb现金流量表,financial_data.py) | 自由现金流=经营现金流-资本支出 |
| 财务 | ROE(护城河) | 利润表净利 ÷ 资产负债表股东权益(同上) | 价值区ROE徽章 |
| 财务 | 分红送转(管理层品质) | 东财 datacenter-web.eastmoney.com(RPT_SHAREBONUS_DET) | 累计派息/股 |
2.2 多源容灾(一源挂另一源上)
调用顺序:腾讯 → 新浪 → 东财(quote_multi.py 已实现):
import quote_multi as qm
q = qm.quote_multi(code) # 内部顺序尝试,每源超时8秒,失败自动切下一个
# 返回: {name, code, price, pct, mcap, pe_ttm, time, source}- 每源超时 ≤8 秒,三源全挂才报错(异常分支见第四节)
- 新浪无总市值字段 → mcap=None,卡片显示"总市值待核实"(不阻塞出卡)
2.3 查询模式
- 行情/事件查询:本地计算模式(取出后代码判定,灵活)
- 互斥条件(如涨跌幅>10% 或 <0):分两次查询再内存合并,绝不单次OR(工具陷阱规避)
三、接口规范(工程师思维)
3.1 查询前"三问"
- 属性名对吗? 严禁臆造字段——腾讯
~分隔字段已实测校准:[1]名称 [2]代码 [3]现价 [31]涨跌额 [32]涨跌幅 [39]PE-TTM [45]总市值(亿)(网上教程多写错,以此为准) - 编码有了吗? 用户给"名称"→ 必须转成带前缀代码(内置池/API映射),否则查不到
- 权限够吗? 本skill全部走公开免key接口,无需鉴权
3.2 执行铁律
- 腾讯/新浪返回 GBK 编码,必须
decode("gbk")否则乱码 - 新浪接口必须带
Referer: https://finance.sina.com.cn,否则403 - 东财接口必须带完整浏览器UA+Referer,否则断连
- 时间格式:统一
YYYY-MM-DD HH:MM;行情时间戳来自接口返回 - 所有HTTP请求显式
timeout≤10s,失败计入重试链
四、输出标准化(产品思维)
4.1 三级输出(★图片优先,失败降级,永远有输出)
| 级别 | 条件 | 输出 | 说明 |
|---|---|---|---|
| ① HTML卡片 | 任意 | 生成 card_代码_日期.html(CSS精美卡片,浏览器打开即卡片,可打印/截图) | 客户零依赖,无渲染服务也完美 |
| ② HTML | 无Chrome | 同模板输出 .html 文件 | 客户Agent直接展示/可截图 |
| ③ Markdown | 最差环境 | 表格/列表卡片 | 文本兜底 |
价值区(8/16升级为真DCF):主=巴菲特自由现金流DCF(FCF=经营现金流-资本支出,取年报FCF;增长率=机构一致预期CAGR×0.5保守化,钳制3%~8%<贴现率10%;每股价值=公司DCF/总股本)→ 附 ROE(年报)+ 分红累计/股。FCF为负(烧钱阶段)→ 自动降级同花顺一致预期EPS粗估,note标注"FCF为负,估值参考机构一致预期"。
V2模板(card_v2_template.html,老板2026-08-16钦定设计):径向渐变深蓝底/顶部渐变条/Consolas大数字/价值徽章(低估绿/偏贵红)/事件列表(自动打标签:订单/分红/公司/业绩/公告)/策略双栏(左蓝已持有/右绿未持有)/免责+钩子。
卡片数据组装(gen_card.py 已实现):
import gen_card
# 内部流程: quote_multi行情 → deep_data深度(研报EPS→DCF粗估+真实公告) → 策略(安全边际) → 模板渲染
# 用法: python gen_card.py 002063 → card_002063_YYYYMMDD.png4.2 异常分支处理表(必读)
| 场景 | 处理逻辑 | 用户提示语 |
|---|---|---|
| 行情三源全挂 | 不阻塞:直接输出HTML/MD卡片,行情区标"行情获取失败" | "实时行情暂时获取失败(多源均超时),已生成数据卡片,稍后可重试" |
| 查无此股票 | 代码/名称匹配失败 | "未找到该股票:{输入}。是否指:[内置池候选列表]?或核对6位代码" |
| 无深度数据(EPS/事件空) | 价值区显示"待研究",事件区显示"近期暂无公告数据" | "深度研究数据待补充(研报/公告接口无覆盖)——不编造,如实标注" |
| 研报EPS缺失 | 用腾讯PE反推EPS粗估(deep_data_with_tencent兜底),仍无→"待研究" | "价值为简化粗估,详细DCF待深度研究" |
| 结果截断 | 事件最多3条(模板限制) | "展示最近3条事件,更多请追问" |
| 图片渲染失败 | 自动降级HTML/MD(4.1) | "图片生成环境受限,已输出HTML卡片(可截图)" |
⚠️ 铁律:没有研究数据就如实说"待研究",绝不编造价值/事件/策略(信誉=生命线,8/13老板定)
五、质量自检清单(提交前对照打钩)
- [ ] 参数解析:名称→代码→市场前缀链路完整;相对时间已处理("昨天"→具体日期)
- [ ] 规则加载:安全边际阈值可配置(会话>用户>系统三级)
- [ ] 多源容灾:腾讯/新浪/东财三源顺序+超时+失败切换,三源全挂有异常分支
- [ ] 接口规范:GBK解码/Referer头/UA头/timeout全部落实;字段以实测校准表为准
- [ ] 输出标准化:三级降级(PNG→HTML→MD)永远有输出;数值格式统一(价格2位/涨跌幅带%/市值亿)
- [ ] 异常处理:无数据/查无此股/接口失败/截断四类分支都有提示语
- [ ] 合规:零外部IP调用(域名API合法);免责声明+风险提示必备;卖研究不卖判断
- [ ] 边界测试:沪/深/北交所代码、停牌股、未上市代码、名称不在池内
六、微信发图约定(2026-08-16老板定·铁律)
背景:微信 8/7 改上传协议,
getuploadurl的rawfilemd5只认 md5(32位hex);Hermes 内置 weixin 适配器(0.18.2/0.20.0 都一样)发 xxhash(16位) → 微信一律拒绝(ret=-2)。内置代码改不了(编译在 exe 里),发图必须走 md5 修复版脚本,禁止用 MEDIA: 直发(必失败)。
用户说"发图"/要发图片时,用独立脚本发送:
$env:PYTHONPATH = "" # ★必须清!Hermes gateway 把 PYTHONPATH 设为 _internal(py3.11),不清则任何 python 子进程 import 即崩
& "D:hermes产品线小昭查股票代码.venvScriptspython.exe" "D:hermes产品线小昭查股票代码weixin_send.py" "<图片路径>" "[附加文字]"- 图片路径示例:
D:hermes产品线小昭查股票卡片示例card_002063_20260816.png - 脚本已实现:md5 → getuploadurl → AES-128-ECB 加密 → CDN 上传 → sendmessage,全链路独立,绕过 Hermes bug
- 运行环境:
.venv(uv 建的 Python 3.12 + cryptography),已实测通过(2026-08-16) - 一次一张,不连发(微信限流);失败看输出 OK/FAIL
附录:开发协作规范(LLM结对)
- 草稿:需求+数据结构整理成Prompt让LLM生成初稿(角色/任务/输入输出/业务规则/技术约束五要素)
- 审查:让LLM自查边界条件(空结果/动态阈值/大并发)、性能陷阱、注入风险
- 测试用例:让LLM列5个边界场景(未来日期/不存在代码/零阈值/停牌/接口超时),逐条实测
- 文档同步:代码改动后立即更新本SKILL.md对应章节(防止文档与实现脱节)
依赖声明
- 运行需要:Python 标准库 + requests(pandas/lxml 可选增强,无则自动跳过机构预期;pillow 仅 –send 微信推送用)——输出 HTML 卡片文件(浏览器打开即精美卡片),零外部服务零浏览器依赖(2026-08-16 SKILLHUB过审版)
- 运行环境:产品线
.venv(uv 建的 Python 3.12);运行前必先$env:PYTHONPATH=""(Hermes gateway 会污染子进程环境,见坑) - 数据源:腾讯/新浪/东财/同花顺(全部公开免费接口,零API key)
- 零外部IP调用(合规8/16):数据源全为腾讯/新浪/东财公开接口;输出HTML卡片文件,不调用任何外部IP服务(SKILLHUB过审版)
坑(实测记录)
- 腾讯字段[45]=总市值单位是亿(不是万);[39]=PE-TTM,空值要判空
- 东财 push2 在本机网络常被断连(RemoteDisconnected)→ 换完整浏览器头或直接跳过用腾讯/新浪
- Chrome截图窗口高度≥1150px,否则底部免责/钩子被截断
- 新浪接口无总市值字段;涨跌幅需用(现价-昨收)/昨收自行计算
- 新浪三表科目名(实测):现金流量净额=
经营活动产生的现金流量净额;资本支出=购建固定资产、无形资产和其他长期资产所支付的现金(含"所"字);_find必须跳过空值科目 - 东财分红
PRETAX_BONUS_RMB单位=每10股派息,算每股要 ÷10 - DCF永续模型必须 g<r:growth 钳制上限 8%(贴现率10%),否则分母为负出负数估值
- DCF优先取年报(12-31)FCF:季报单期会失真(软件股Q1经营现金流常为负)
- 新浪三表对北交所(8/4开头)可能无覆盖 → 自动走EPS粗估fallback