Install
openclaw skills install @bwgao/ashare-analyzer生成A股综合分析报告(深交所/上交所/北交所),包含K线技术指标图表、同行业对比、基本面分析、主营业务构成、技术面评分、催化剂与风险、短线/中线买卖建议。当用户提供A股名称(如康盛股份)或代码(如002418、002418.SZ、sz002418)并要求分析、出报告、看技术面,或简单输入"002418"、"看看康盛股份"时触发。仅对A股触发,不对美股、港股、加密货币或无具体标的的大盘评论触发。
openclaw skills install @bwgao/ashare-analyzer根据A股名称或代码,生成包含两张图表的综合分析报告,严格遵循 references/report_template.md 中的锁定模板。
康盛股份、贵州茅台、宁德时代002418、600519、002418.SZ、sz002418、SH600519分析一下 002418、看看康盛股份、002418 怎么样、贵州茅台技术面如果名称有歧义,先询问用户确认后再继续。
本 skill 使用多个专业数据源,每个领域选择最可靠的来源:
| 领域 | 主要来源 | 说明 |
|---|---|---|
| 价量K线(股票 + 沪深300 + 对比股) | 腾讯财经 | web.ifzq.gtimg.cn + qt.gtimg.cn — 无需认证,实时 |
| 同行业/同概念/题材 | 东方财富F10 ssbk + 板块成员 | 直连 push2delay API,规避 akshare 限流 |
| 基本面 | Fallback链:tushare → akshare → baostock → eastmoney | 来源透明,永不做静默回退 |
| 主营业务构成 | 东方财富 RPT_F10_FN_MAINOP | 按产品/行业/地区拆分 |
tushare、akshare、baostock、pandas、numpy、matplotlib。安装:
pip install tushare akshare baostock pandas numpy matplotlib -q
TUSHARE_TOKEN 环境变量 — 启用 tushare pro 作为基本面第一优先来源。未配置时自动降级到 akshare/baostock/eastmoney。python scripts/resolve_code.py "康盛股份" # 名称
python scripts/resolve_code.py 002418 # 代码
python scripts/resolve_code.py 002418.SZ # 带后缀代码
python scripts/resolve_code.py sz002418 # 带前缀代码
返回 JSON,包含 code6、ts_code、tencent_code、name、industry。如果匹配到多个结果:{"matches": [...]} — 停下来让用户选择。
python scripts/fetch_and_analyze.py "康盛股份" --outdir ./output
# (接受名称或代码 — 与 resolve_code.py 参数相同)
这一条命令完成全部数据采集:
ssbk 分类中选取3-4只对比股:
kline_<code>.pngcompare_<code>.pngdata_<code>.json如果 fundamental_used 为 null 且 needs_websearch 为 true,说明4层 fallback 全部失败;Claude 必须 web_search 补充缺失的基本面数据(ROE、利润率、最新财报),再填写报告。
⚠️ 执行前必读规则(不可跳过):
Read references/report_template.md,确认每个字段的名称和含义。web_search 要求)。读取 data_<code>.json,基于 Claude 判断生成叙述性分析 JSON 文件(narrative_<code>.json)。不得编造数字 — 所有数字来自数据包,Claude 只负责叙述和判断类字段。不得编造催化剂/风险 — 催化剂和风险必须基于 web_search 结果,不得凭通用行业知识编造。
写 narrative 前必须 web_search(不可省略):
<名称> 公告、<名称> 澄清、<名称> 减持、<名称> 利好,覆盖最近30天references/technical_scoring.mdnarrative JSON 结构(保存为 narrative_<code>.json,放在 output 目录):
{
"concepts": "3-5个最相关概念板块",
"company_comment": "1-2句公司定性描述",
"price_position": "当前价格位置描述",
"business_comment": "业务结构评价",
"region_summary": "按地区一句话概述",
"tech_score": 3,
"tech_verdict": "中性偏多",
"tech_brief": "简评",
"ma_verdict": "均线排列判断",
"rsi_verdict": "RSI判断",
"macd_verdict": "MACD判断",
"bb_verdict": "布林带判断",
"kdj_verdict": "KDJ判断",
"vol_verdict": "成交量判断",
"market_comment": "vs沪深300一句话点评",
"peer_findings": ["发现1", "发现2", "发现3", "发现4"],
"catalysts": [{"title":"标题", "impact":"高/中高/中/低", "desc":"描述"}],
"risks": [{"title":"标题", "impact":"高/中高/中/低", "desc":"描述"}],
"overall_judgment": "一句话整体判断",
"short_term": {"tech":"...", "support":"支撑位", "resist":"阻力位", "advice":"操作建议", "stop_loss":"止损价"},
"mid_term": {"drivers":"驱动力", "valuation":"估值判断", "support":"中期支撑", "advice":"建议", "target":"目标价", "scenarios":"乐观X/中性X/悲观X"},
"stars": {"fundamental": 1-5, "concept": 1-5, "tech": 1-5, "timing": 1-5},
"stars_comment": {"fundamental":"评价", "concept":"评价", "tech":"评价", "timing":"评价"},
"one_liner": "一句话投资结论"
}
python scripts/generate_report.py --data ./output/data_<code>.json --narrative ./output/narrative_<code>.json --outdir ./output
生成独立的 report_<code>.html,包含:
告知用户 HTML 报告已生成,路径为 ./output/report_<code>.html,并询问是否在浏览器中打开。
needs_websearch: true,必须先 web_search 获取该股票最近财报数据,再填写财务板块。不得留空或使用占位文字。references/report_template.md — 报告模板(叙述内容的填写指南)references/technical_scoring.md — 10分制技术面评分标准references/peer_selection_rules.md — 对比股板块分类规则scripts/
├── resolve_code.py — 名称/代码 → ts_code / tencent_code(东方财富搜索 + 快照)
├── fetch_and_analyze.py — 主管线(一条命令完成全部采集)
├── generate_report.py — 数据JSON + 叙述JSON → 独立HTML报告
├── peer_selector.py — 行业/概念/题材分类 + 代表性选股
├── fundamental_chain.py — tushare → akshare → baostock → eastmoney fallback
├── plot_kline.py — K线渲染(MA / BB / 成交量 / MACD / RSI)
├── plot_compare.py — 归一化1年对比图
└── sources/
├── tencent.py — K线 + 实时行情(无需认证)
├── eastmoney.py — F10 ssbk、主营业务、板块成员、数据中心指标
├── akshare_src.py — 个股信息、行业/概念查询、基本面
├── tushare_src.py — tushare pro 基本面(优先级1)
└── baostock_src.py — 免费季报基本面(优先级3)