mingli30119/stock-analysis/stock-analysis

Claude Code and agent skill by mingli30119/stock-analysis

Trust tier 2
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

一句话搞定个股分析 — 说"分析XXX",自动采集30+数据源 → AI完成基本面(Step 0-8)+技术面+资金面的完整研报 → 生成交互式HTML报告。支持增量更新(K线/行情/技术指标自动刷新)。触发词:"分析XXX股票"(首次)或"更新XXX股票"(增量)。

Install

npx vskill@latest install mingli30119/stock-analysis/stock-analysis

SKILL.md

一句话搞定个股分析

版本:v3.1 | 更新:2026-05-30 | 用户说一句话 → 30+数据源采集 → Step 0-8 基本面 + 第9章技术面 + 资金面 → 双主题交互式HTML

📋 快速导航


⚡ 使用方式

场景判断

AI必须根据用户输入的关键词判断场景:

场景A:首次分析(完整流程)

触发关键词:

  • "分析 XXX股票"
  • "个股分析 XXX"
  • "研究 XXX"
  • "生成 XXX报告"
  • 用户明确说"首次分析"

判断逻辑:

  • 用户输入包含上述关键词 → 执行首次分析(Phase 1→2→3)
场景B:增量更新(只更新数据)

触发关键词:

  • "更新 XXX股票"
  • "刷新 XXX报告"
  • "增量更新 XXX"
  • "更新报告"
  • 用户明确说"更新"

判断逻辑:

  1. 用户输入包含上述关键词
  2. 检查 output/个股研究-{股票名称}.html 是否存在
  3. 如果存在 → 执行增量更新
  4. 如果不存在 → 提示用户:"未找到 XXX 的报告,是否需要首次分析?"

场景A:首次分析

当用户说"分析 XXX股票"时,一句话触发全流程:

Phase 1: 数据采集(3-5分钟)
bash
cd G:/vibe/my-skills/stock-analysis-enhanced
python stock_full_report.py <股票代码>

示例:

bash
python stock_full_report.py 600519 # 贵州茅台
python stock_full_report.py 600673 # 东阳光

唯一输出: output/data_<股票代码>.json(包含K线、财务、股东、业务构成等完整数据,供Phase 2/3使用)

⚠️ Phase 1完成后立即进入Phase 2,不要停下来询问用户。JSON只是数据中间产物。

⚠️ Phase 1 新增功能: 自动计算技术指标(MACD/KDJ/RSI/BOLL/MA),保存到 data_{代码}.json 的 technical_indicators 和 technical_signals 字段,供 Phase 3 生成第9章使用。


场景B:增量更新

执行命令:

bash
cd G:/vibe/my-skills/stock-analysis-enhanced副本
python update_stock_report.py <股票代码>

常用参数:

bash
# 基本用法(自动查找HTML文件)
python update_stock_report.py 000066
# 指定HTML文件
python update_stock_report.py 000066 --html output/个股研究-中国长城.html
# 强制更新(跳过检查,直接更新)
python update_stock_report.py 000066 --force

更新内容:

  • ✅ K线数据(rawData数组)
  • ✅ Hero区域(最新价、涨跌幅)
  • ✅ 第9章技术指标(MACD/KDJ/RSI/BOLL图表)
  • ❌ 基本面分析(Step 0-8,不更新)

详细说明: 见本文件末尾"🔄 增量更新详细说明"章节


Phase 2: AI深度分析(30-60分钟)

AI必须手动执行以下步骤:

  1. 读取数据: output/data_<股票代码>.json
  2. 执行MCP搜索: 根据实际需要搜索(通常3-6次)
  • 行业趋势、市场规模
  • 竞争对手、市场份额
  • 券商研报、目标价
  • 最新新闻、政策动态
  1. 逐步完成Step 0-8分析: 严格按照分析框架,每个Step达到要求
  2. 输出MD报告: output/个股研究-<股票名称>.md

⚠️ 三阶段连续执行,中间不中断: Phase 2完成后立即进入Phase 3,不要停下来询问用户是否继续。MD报告只是中间产物,HTML才是最终交付物。


Phase 3: HTML生成层(AI手动分批拼装 + 逐批机械校验)
⚠️ 写 HTML 只用 Write 工具。整个 Phase 3 只需 6 次 Write 调用,约 30 分钟,完全在单会话内完成。不要用 Python 替代。

原理: AI手写完整HTML——从范例提取结构参照,从 shared/ 搬运CSS/JS,从MD报告提取内容。分批 Write,每批写完后立即用 grep 对范例做机械校验,通过才继续。

核心规则:不靠记范例,靠每批 grep diff。

执行步骤:

  1. 读取模板: shared/template_base.css + shared/template_base.js
  2. 读取范例并提取参照: examples/个股研究-中国长城.html → 用 grep 提取 nav 锚点列表、section id 列表,保存为临时参照文件
  3. 读取校验规范: HTML手写参考.md → 严格按「分批机械校验」表格逐批执行
  4. 读取数据: output/个股研究-{股票名称}.md + output/data_{代码}.json
  5. 分批手写HTML(每批 = Write + grep校验):
  • 每批 ≤300行,用 Write工具 直接写HTML markup
  • 写完后立即跑该批对应的 grep 校验命令(命令清单见 HTML手写参考.md § 分批机械校验)
  • 校验通过 → 下一批。校验失败 → grep 范例对应行 → 比对 → Edit 修正 → 重新校验
  1. 合并: 仅用 cat 做机械字节拼接
  2. 终验: 运行合并后终验命令(nav-id 配对 + 结构完整性),全部通过才输出最终文件
  3. 输出: output/个股研究-{股票名称}.html
⚠️ 分批手写规则(强制)

禁止行为:

禁止原因
❌ Python f-string/template 生成HTML需要大量 {{}} 转义,易出错不可维护
❌ Bash heredoc 生成HTML多行HTML下经常EOF匹配失败
❌ 一次性写出整个HTML>300行文件必须分批,每批独立一个Write调用
❌ 用 `python -c` 拼接HTML字符串属于Python生成,不是手写

正确做法:

操作工具说明
写入HTML内容Write直接写HTML markup,无转义问题
精确局部修改Edit替换特定行,不改动其他部分
机械合并部分文件Bash `cat` 或 Python `file.read()`仅读取+拼接字节,不生成任何markup

标准分批方案(~900行HTML)—— 每批三步:Read范例 → Write → grep:

参考范例: examples/个股研究-中国长城.html(864行,金标准成品)

⚠️ 参考范例路径不可变。 该文件位于 examples/ 目录(稳定范例),禁止替换为 output/ 下的生成结果。行号基于当前版本,如范例更新需同步修正行号。
批次Step 1: Read范例(先看再写)Step 2: WriteStep 3: grep兜底
Batch 0Read 中国长城 line=1-129(head+style段)Write DOCTYPE + <head> + <style>grep -c '<style>'=1, `grep 'echarts\MathJax'` 确认CDN
Batch 1Read 中国长城 line=130-195(nav+hero+conclusion+profile网格)Write <body> + nav + hero + conclusion(含交易参数行) + grid-2(公司画像+近期动态)grep -oc 'href="#'=14, grep -c 'hero-meta-item'=5, grep 'nav-analysis-date'存在, `grep -c '利好\利空\中性'≥5, grep 'overflow-y\max-height:300'=0, grep -c 'style="[^"]color:#fff[^"]"\style="[^"]color:white[^"]"\style="[^"]*color:rgba(255'=0, grep -c '买入区间\止损位\目标价\建议仓位'`≥4
Batch 2Read 中国长城 line=196-260(饼图+财务+K线)Write 饼图+财务grid-2 + K线card(kline-section)grep 'id="kline-section"' 存在, grep 'height:480px' 存在, grep -c 'markLine'≥1, grep -c 'markPoint'≥1
Batch 3Read 中国长城 line=260-397(Step 0-3)Write Step 0-3 卡片(mission/macro/chain/quality)grep -o 'id="[^"]*"' → mission/macro/chain/quality 四者存在
Batch 4Read 中国长城 line=398-550(Step 4-6)Write Step 4-6 卡片(elasticity/risk/valuation)grep -o 'id="[^"]*"' → elasticity/risk/valuation 三者存在, grep -c 'score-fill.*width'≥10, grep 'border-top:2px solid var(--gold)' 弹性树横线存在
Batch 5Read 中国长城 line=551-863(Step 7-8+第9章+footer)Write Step 7-8 卡片 + 第9章技术面卡片(信号总览6卡片→技术图表2x2→多周期趋势→位置形态→动量量价→资金面→市场风格→综合研判)+ footer + </div>grep -o 'id="[^"]*"' → compare/tracking/technical 存在, grep '📌' 存在, grep -c '<p>' footer段=5, grep 'strong' footer段=0, `grep '催化剂兑现追踪\已兑现\待兑现'存在, grep '📋 事件记录'存在, grep -c 'chart-macd\chart-kdj\chart-rsi\chart-boll'`=4
Batch 6Read 中国长城 line=864-1155(script段);从 data_{代码}.json 提取K线(最近120条)和业务构成Write <script>...</script>(搬运 template_base.js 完整内容,替换4处占位符:__RAW_DATA_ARRAY__ → K线JSON数组、__PIE_DATA_ARRAY__ → 业务构成JSON数组、__MARKLINE_DATA__ → markLine数组、__MARKPOINT_DATA__ → markPoint数组。模板已含技术指标计算+6个渲染函数,直接搬运无需修改)grep -c '__'=0, grep -cF 'const rawData'=1, grep -c 'renderMACD'=1, grep -c 'renderKDJ'=1, grep -c 'renderRSI'=1, grep -c 'renderBOLL'=1, grep -c '</script>'=1
合并+终验—Bash cat _h_part*.html > 最终文件,然后运行 `HTML手写参考.md` § 终验自检清单 全部 16 条全部通过才输出最终文件

执行规则(不可跳过):

  1. 每批第 1 步:必须用 Read 工具打开范例对应行号区间。读完范例段落后立即 Write,中间不做其他操作。
  2. 写完后跑第 3 步 grep。对不上 → grep 范例对应行 → grep 自己写的 → 看差异 → Edit 修正 → 重跑 grep。
  3. 三步全部通过才进入下一批。
若各批写为独立文件,用 `cat _h_part*.html > 最终文件` 合并,然后删临时文件。

Step 0-8 关键可视化组件清单:

  • Step 0: 4个信息卡片(标的/周期/风格/命题)
  • Step 1: 核心矛盾高亮框
  • Step 2: 产业链SVG图谱、grid-2布局、关键判断提示框
  • Step 3: grid-2布局、6个评分条、评级徽章
  • Step 4: 弹性树、公式卡片2x2、情景分析grid-3
  • Step 5: grid-2布局、止损信号列表
  • Step 6: grid-2布局、三档目标价、盈亏比量化卡片
  • Step 7: 对比表格、增长引擎切换3卡片
  • Step 8: grid-2布局、执行清单、verdict-highlight、五维评分、📌总结框(强制,红色左边框)

关键约束:

  • OHLC 转换:ohlc.push([d[1], d[4], d[3], d[2]]) — rawData 格式 [日期, 开盘, 最高, 最低, 收盘, 成交量](akshare 原生列序),itemStyle 用 color: c.upColor, color0: c.downColor。与 stock-analysis-github 验证通过版本一致
  • 成交量柱必须每根单独着色(红涨绿跌)
  • 产业链 SVG 文字使用 .svg-hdr / .svg-sub class
  • MathJax 使用 \\(...\\) 行内分隔符 → HTML源码中写 `\(...\)`(单反斜杠),禁止 `\\(...\\)`(双反斜杠)。HTML text 中反斜杠不是转义符,双反斜杠会导致 MathJax 分隔符匹配失败
  • 所有CSS class必须来自 shared/template_base.css
  • 内容区子标题禁止编号前缀(不用 "1a/1b/2a"),直接写中文描述文字
  • 禁止 h2/h3 标题带"Step X"编号前缀:卡片标题只写中文描述(如"任务锁定与核心矛盾",不写"Step 0 · 任务锁定"),.sub 同样禁止编号
  • Hero meta-item 5项固定顺序:①分析基准日(data-cutoff日期,标签"分析基准日",值格式YYYY-MM-DD)②公司质地等级(Step 3评分,标签"公司质地")③中期目标价 ④盈亏比 ⑤风险等级
  • 两套评分标签区分:Step 3 评分 → 标签"公司质地评分";Step 8 评分 → 标签"综合交易评分"。两套分维度不同、数值不同是正常的,标签区分清楚即可
  • 产业链 SVG 内容质量:不满足于基础的3节点模板。根据 MD 分析内容扩充节点——多业务线(如 IVD vs SPD)、分支节点(如子公司网络)、关键数据标注(如各业务毛利率)。每个`<text>`元素≤14个中文字,超出换新<text>行(y+22)。写完自检:最长text字符数×13px < 所在rect的width
  • 📌总结框为强制组件:Step 8 底部必须有一个独立的红色左边框总结框(border-left:4px solid var(--red-up)),包含 📌 总结 标题和一段话总结,不可省略或用 verdict-highlight 替代
  • 弹性树强制HTML模板:使用flex+CSS边框构建树形图——顶层节点(金色边框)→竖线(2px×6px gold)→横线(border-top:2px solid gold)→三列子节点flex(2:1:1)。🔴红色/🟡金色/⚪灰色分别标记核心/次要/其他业务。每个子节点含业务名+营收占比+毛利率+业务线+弹性因子。禁止纯文本无树形图
  • 评分条score-fill宽度强制:每个 .score-fill 必须为 <div>(禁止 `<span>`,inline 元素 width 无效),必须有内联 style="width:X%",X为该维度得分百分比。格式:<div class="score-fill" style="width:65%;"></div>——不可省略style属性,不可用CSS class替代width。高分段(≥70%)金色,中分段(40-69%)橙色,低分段(<40%)红色
  • 核心结论区强制附加交易参数行:.conclusion-top 内 verdict-tags 下方必须有一行 border-top:1px dashed var(--border) 分隔,展示5个关键交易参数(flex行,居中排列):①买入区间(绿色)②止损位(绿色)③目标价(红色)④建议仓位(金色)⑤盈亏比(金色)。格式:<div style="font-size:11px;color:var(--text-muted);">标签</div><div style="font-weight:700;color:语义色;font-size:15px;">值</div>。参数来源于 MD 报告 Step 6/8 分析结论
  • Hero标签限制:.hero-tags 内标签≤5个,每个标签≤4个中文字
  • Footer格式:作者行和联系方式行禁止使用strong标签和金色高亮,保持纯文本
  • 禁止HTML body内联硬编码颜色:所有 style="color:#fff" / style="color:white" / style="color:rgba(255,255,255,...)" 必须改用CSS变量(var(--text-primary) / var(--text-secondary) 等),确保双主题切换时文字始终可见。浅色模式下 card-bg-alt 为 #fef5e7(暖奶油色),白色文字完全不可见
  • 近期动态强制规范:禁止使用滚动容器(max-height/overflow-y),固定高度展示。每条新闻用纯文本 <span>(暂不设链接)。每条右侧必须有利好/利空/中性标签(<span> + 内联style),利好=红色背景+红字(background:rgba(245,86,86,0.15);color:var(--red-up)),重大利好另加红色左边框(border-left:3px solid var(--red-up)),中性=金色背景+金字(background:rgba(212,168,83,0.15);color:var(--gold)),利空=绿色背景+绿字。标签文字≤4字。增量更新时,近期动态必须替换为当日最新新闻,重新判断利好利空属性
  • K线图强制技术标注:必须包含4条markLine(虚线金色#d4a853):前高压力位/关键均线(MA20或MA60)/加仓位/止损位,价格取自MD报告分析内容。2个markPoint(pin图标):当前价位(金色#d4a853)+关键历史价位(红色#f55656)。label用#fff 字号11px fontWeight bold。markLine label用#d4a853 字号10px

输出文件
output/
├── data_<股票代码>.json # Phase 1: 原始数据(akshare采集)
├── 个股研究-<股票名称>.md # Phase 2: 完整分析报告
└── 个股研究-<股票名称>.html # Phase 3: 可视化HTML报告

🔧 配置要求

所有版本通用

必需配置:

  • Python 3.8+
  • akshare库(数据采集)
  • Claude Code环境(AI分析和HTML生成)
  • 智谱AI MCP配置(.mcp.json):用于Phase 2的中文信息搜索

配置示例:

.mcp.json(智谱AI搜索):

json
{
"mcpServers": {
"zhipu": {
"command": "npx",
"args": ["-y", "@zhipu-ai/mcp-server"],
"env": {
"ZHIPU_API_KEY": "your_zhipu_api_key"
}
}
}
}

说明:

  • Enhanced版本:本地使用,MCP已配置
  • Competition版本:比赛提交,需确保MCP配置文件存在
  • GitHub版本:开源发布,需在README中说明MCP配置步骤

🏗️ 三层架构

架构图
┌─────────────────────────────────────────────┐
│ 用户输入 │
│ "分析 XXX股票" 或 "分析 600519" │
└────────────────────┬────────────────────────┘
│
┌──────────────────▼──────────────────┐
│ Phase 1: 数据采集(脚本) │
│ python stock_full_report.py <code> │
│ → output/data_{代码}.json │
└──────────────────┬──────────────────┘
│
┌──────────────────▼──────────────────┐
│ Phase 2: AI分析(手写) │
│ 读取 data JSON → MCP搜索 │
│ → 逐步完成 Step 0-8 │
│ → output/个股研究-{名称}.md │
└──────────────────┬──────────────────┘
│
┌──────────────────▼──────────────────┐
│ Phase 3: HTML生成(手写) │
│ CSS/JS 从 shared/ 搬运 │
│ 内容从 MD + data JSON 提取 │
│ 结构参考 examples/ 范例 │
│ → output/个股研究-{名称}.html │
└──────────────────┬──────────────────┘
│
┌──────▼──────┐
│ 完成 ✓ │
└─────────────┘

📊 输出内容

MD报告结构(540-740行)
markdown
# {股票名称}({股票代码})深度研究
## 基本信息
-股票名称、代码、行业、市值、PE、PB等
## 财务摘要(最近一年)
-营业收入、净利润、毛利率、ROE
## 股东结构
-十大股东表格
## 主营业务构成
-业务构成表格
---
## Step 0: 任务锁定(10行)
-标的、周期、数据截止日、研究状态、风格预判
## Step 1: 宏观与周期定位(50行)
-1a. 经济周期映射
-1b. 政策与环境扫描
-1c. 核心矛盾提炼
## Step 2: 产业链深度拆解(100行)
-2a. 题材来源判断
-2b. 产业链图谱(ASCII/Mermaid)
-2c. 趋势三要素
-2d. 价值链利润分布
## Step 3: 公司筛选与质量评分(50行)
-3a. 正面筛选清单
-3b. 不碰清单
-3c. 质量评分(100分制)
## Step 4: 业绩弹性测算(80行)
-4a. 分业务弹性树
-4b. 价格敏感度公式
-4c. 情景分析
## Step 5: 风险分析(40行)
-5a. 风险清单
-5b. 逻辑破坏条件(5个止损信号)
## Step 6: 估值与买卖时机(100行)
-6a. 估值方法
-6a+. 资金面分析
-6a++. 技术面分析
-6b. 三档目标价
-6c. 盈亏比量化
## Step 7: 对标分析(60行)
-7a. 案例类比法
-7b. 增长引擎切换

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

  • SKILL.md in the repositoryCheckingSKILL.md

Popularity

Repository stars
488
Repository forks
87
7-day trend score
31

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 20 May 2026, 5 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/mingli30119/stock-analysis/stock-analysis/badge)](https://verified-skill.com/skills/mingli30119/stock-analysis/stock-analysis)

Something wrong with this skill or its page? Tell us.