01. A股行业图谱 LLM Wiki
基于 llm-wiki.md 模式构建的 A 股行业知识图谱。
5537 支 A 股,371 个行业标签(三级层级),719 个概念板块,全部以 Obsidian wiki 形式呈现,由 LLM 维护更新,使用单HTML文件输出。

02. 项目结构
01_Sources/ # 原始数据(只读,LLM 不修改)
├── A股全量股票字段导出.csv # 当前最新全量数据
├── value_chains.json # 一级行业上下游关系定义
└── 行业数据/archive/ # 历史版本归档(自动生成)
02_Wiki/ # LLM 生成的 wiki(LLM 完全维护)
├── index.md # 总索引 + Dataview 概览
├── log.md # 变更日志(追加式)
├── INDUSTRIES/ # 行业板块页(371 个)
├── CONCEPTS/ # 概念板块页(719 个)
└── STOCKS/ # 个股详情页(5537 支)
03_Scripts/ # 工具脚本
└── build_industry_wiki.py # Wiki 生成/更新脚本
03. CSV 数据格式
数据文件路径:01_Sources/A股全量股票字段导出.csv
| 字段 | 说明 | 示例 |
|---|---|---|
| 股票代码 | 含交易所后缀 | 600519.SH |
| 股票名称 | — | 贵州茅台 |
| 所属行业 | 三级行业,、 分隔 | 食品饮料、白酒、白酒Ⅲ |
| 概念板块 | 多个概念 、 分隔 | 一线酒企、同花顺漂亮100 |
| 总市值(亿元) | — | 15152.24 |
| PE_TTM | — | 18.32 |
| PB | — | 5.59 |
| 营业收入(亿元) | — | 539.09 |
| 归母净利润(亿元) | — | 272.43 |
数据来源:同花顺行情中心导出。
04. 使用方式
4.1 首次构建
python3 03_Scripts/build_industry_wiki.py
全量生成所有 wiki 页面。
4.2 增量更新(日常使用)
拿到最新的同花顺 CSV 后,覆盖 01_Sources/A股全量股票字段导出.csv,然后:
python3 03_Scripts/build_industry_wiki.py --update
对比上一版本,只更新有变化的页面:
- 新增股票 → 生成个股页,更新所属行业/概念页
- 删除股票 → 删除个股页,更新所属行业/概念页
- 数据变更 → 更新个股页
- 行业/概念归属变更 → 更新个股页 + 受影响行业/概念页
- 无变化 → 秒回跳过
旧 CSV 自动归档到 01_Sources/行业数据/archive/。
4.3 差异预览(不写文件)
python3 03_Scripts/build_industry_wiki.py --diff
只显示新增/删除/修改的股票清单,不写入任何文件。
05. 更新后的操作
- 运行更新脚本
- 切回 Obsidian
- 图谱视图点击刷新按钮
- 已打开的页面会自动更新内容
06. Obsidian 配置
在 Obsidian 中打开本项目根目录即可。推荐插件:
- Dataview —
index.md中的动态表格需要此插件 - Graph View — 内置,展示行业/概念/股票之间的关联关系
07. Wiki 页面结构
7.1 行业板块页(INDUSTRIES/)
层级式命名:食品饮料·白酒·白酒Ⅲ.md
每个行业页包含:
- 上级/子行业导航(
[[wikilink]]) - 成分股列表
- 关联概念板块
7.2 概念板块页(CONCEPTS/)
扁平命名:人工智能.md
每个概念页包含:
- 成分股列表
7.3 个股详情页(STOCKS/)
以股票名称命名:贵州茅台.md
每个个股页包含:
- 基本面数据(市值/PE/PB/营收/利润)
- 行业归属路径
- 所属概念板块
所有页面通过 Obsidian [[wikilink]] 互相关联,在图谱视图中形成完整的行业知识网络。
08. 价值链关系
31 个一级行业之间的上下游关系定义在 01_Sources/value_chains.json 中。每个行业页自动继承一级行业的上下游链路:
- 上游行业 — 本行业从哪些行业获取原材料、设备或服务
- 下游行业 — 本行业的产品/服务流向哪些行业
例如钢铁页会显示:
上游行业: 煤炭 · 环保
下游行业: 建筑装饰 · 机械设备 · 汽车 · 房地产 · 国防军工
子行业(二级/三级)自动继承一级行业的价值链关系。如需调整上下游定义,编辑 value_chains.json 后运行 --update 即可全量刷新行业页。
09. 交互式图谱可视化
本项目支持生成单 HTML 文件交互式图谱可视化,使用 D3-force 力导向布局 + Canvas 2D 渲染。
9.1 脚本说明
| 脚本 | 作用 |
|---|---|
03_Scripts/extract_graph_data.py | 从 CSV 提取图谱节点和边数据,输出 02_Wiki/graph-data.json(压缩 JSON) |
03_Scripts/build_graph_html.py | 将 graph-data.json 嵌入 graph_template.html 生成完整的 02_Wiki/graph.html |
03_Scripts/graph_template.html | HTML 模板,包含全部交互逻辑和样式 |
9.2 生成图谱
# 第一步:提取图谱数据
# 从 CSV 读取数据,输出 02_Wiki/graph-data.json
python3 03_Scripts/extract_graph_data.py
extract_graph_data.py :无命令行参数,固定读取:
01_Sources/A股全量股票字段导出.csv—— 股票基本面数据01_Sources/value_chains.json—— 一级行业上下游关系- 输出到
02_Wiki/graph-data.json
# 第二步:构建完整 HTML 文件
# 默认(当前项目)
python3 03_Scripts/build_graph_html.py
# 自定义路径(支持复用此脚本到其他图谱项目)
python3 03_Scripts/build_graph_html.py \
--data <path/to/graph-data.json> \
--template <path/to/graph_template.html> \
--output <path/to/output.html>
build_graph_html.py 命令行参数:
| 参数 | 简写 | 说明 | 默认 |
|---|---|---|---|
--data | -d | graph-data.json 数据文件路径 | 02_Wiki/graph-data.json |
--template | -t | HTML 模板文件路径 | 03_Scripts/graph_template.html |
--output | -o | 输出 HTML 文件路径 | 02_Wiki/graph.html |
输出:02_Wiki/graph.html(~4MB,包含所有数据嵌入在单个文件中)。
9.3 HTML 交互功能
| 操作 | 功能 |
|---|---|
| 鼠标滚轮 | 缩放(0.1× ~ 8×) |
| 鼠标拖拽 | 平移画布 |
| 单击节点 | 1. 高亮上下游连接(上游蓝色线 / 下游橙色线);2. 隐藏所有非直接上下游节点(聚焦模式);3. 右侧弹出详情面板 |
| 双击节点 | 展开成分股列表(按市值降序,显示前 20 支) |
| 点击画布空白区域 | 取消选中,恢复显示全部节点 |
| 筛选按钮(顶部) | 全部 / 仅行业 / 仅概念 / 切换价值链高亮 |
| 搜索框(顶部) | 搜索行业 / 概念 / 股票,点击结果自动跳转到节点 |
| 图例(左下角) | 颜色说明:一级行业蓝 / 二级行业黑 / 三级行业灰 / 概念板块棕黄 |
9.4 技术特点
- 单文件便携 :所有数据嵌入 HTML,无需服务器,直接双击打开
- 性能优化 :视口裁剪 + 按需渲染 + LocalStorage 缓存布局坐标,首次加载后 < 500ms 打开
- 概念自动聚类 :远缩放时自动聚类概念节点,避免视觉混乱
- 响应式 :适配桌面/移动屏幕
10. 原文来源
原文发表于微信公众号“中老年叨叨”(2026年7月28日 17:37)。查看微信公众号原文。