Skip to content

Obsidian 知识库方案 ​

结论:建议采用“Obsidian 文件库 + 统一 YAML 元数据 + 股票代码分目录 + SQLite 全文索引”的方式。

核心原则是:

  • Markdown 是唯一原始分析记录,长期保存。
  • HTML 是 Markdown 的展示版本,可以随时重新生成。
  • 股票代码是唯一主键,股票名称只用于阅读和搜索。
  • 所有文件必须带结构化元数据,不能只依赖文件名。
  • 少量记录直接用 Obsidian 搜索;积累到几千、几万篇后用 SQLite 查询。

一、推荐目录结构

text
stock-research/
├── 股票档案/
│   ├── SH600519-贵州茅台.md
│   ├── SZ000858-五粮液.md
│   ├── HK00700-腾讯控股.md
│   └── NASDAQ-AAPL-苹果.md
│
├── 分析记录/
│   ├── SH600519/
│   │   ├── 2026/
│   │   │   ├── 2026-09-04_SH600519_贵州茅台_日常跟踪.md
│   │   │   ├── 2026-09-15_SH600519_贵州茅台_中报复盘.md
│   │   │   └── 2026-10-01_SH600519_贵州茅台_估值分析.md
│   │   └── 2027/
│   ├── SZ000858/
│   ├── HK00700/
│   └── NASDAQ-AAPL/
│
├── HTML报告/
│   ├── SH600519/
│   │   └── 2026/
│   │       └── 2026-09-04_SH600519_贵州茅台_日常跟踪.html
│   └── ...
│
├── 行业研究/
│   ├── 白酒/
│   ├── 银行/
│   └── 人工智能/
│
├── 组合复盘/
│   ├── 2026/
│   └── 2027/
│
├── 数据/
│   ├── stocks.csv
│   └── research-index.sqlite
│
└── 模板/
    └── 股票分析模板.md

不要按日期作为最外层目录。因为你的主要查询场景是“查某只股票的全部历史分析”,所以应该先按股票代码分组,再按年份分组。

二、统一股票代码格式

建议建立自己的标准代码:

text
A股上海:SH600519
A股深圳:SZ000858
港股:HK00700
美股:NASDAQ-AAPL

以代码作为唯一标识,不要只用股票名称。原因是:

  • 股票名称可能变更。
  • 不同市场可能存在同名公司。
  • ST、退市、借壳会导致简称变化。
  • 股票代码更适合程序化查询。

可以在 stocks.csv 中维护股票基础信息:

csv
stock_id,code,name,market,industry,aliases
SH600519,600519,贵州茅台,上海证券交易所,白酒,茅台
SZ000858,000858,五粮液,深圳证券交易所,白酒,
HK00700,00700,腾讯控股,香港交易所,互联网,腾讯
NASDAQ-AAPL,AAPL,Apple,NASDAQ,消费电子,苹果

三、文件命名规则

统一使用:

text
日期_标准代码_股票名称_分析类型.md

例如:

text
2026-09-04_SH600519_贵州茅台_日常跟踪.md
2026-09-15_SH600519_贵州茅台_财报复盘.md
2026-10-01_SH600519_贵州茅台_估值分析.md

如果一天可能分析多次,可以加入时间:

text
2026-09-04_0930_SH600519_贵州茅台_盘前分析.md
2026-09-04_1530_SH600519_贵州茅台_收盘复盘.md

不要使用:

text
茅台分析.md
今天复盘.md
9月股票分析.md

这种文件名以后很难批量定位、排序和建立索引。

四、每个 Markdown 必须包含 YAML 元数据

这是整个方案最重要的部分。

推荐模板:

markdown
---
id: SH600519-20260904-1530-close-review
stock_id: SH600519
code: "600519"
name: 贵州茅台
market: A股
exchange: 上交所
industry: 白酒
analysis_date: 2026-09-04
analysis_time: "15:30"
analysis_type: 收盘复盘
period: 日线
price: 0
rating: 观察
position_status: 未持仓
confidence: 中
keywords:
  - 白酒
  - 高端消费
  - 业绩跟踪
tags:
  - 股票分析
  - SH600519
  - 贵州茅台
html_file: ../../HTML报告/SH600519/2026/2026-09-04_SH600519_贵州茅台_收盘复盘.html
---

# 贵州茅台分析记录

## 一、当日结论

一句话写清楚当前判断。

## 二、现状与数据

- 当前价格:
- 成交量:
- 估值:
- 关键财务数据:
- 重要事件:

## 三、核心判断

### 看多逻辑

1.
2.

### 风险逻辑

1.
2.

## 四、与上次判断对比

上次分析:[[2026-08-20_SH600519_贵州茅台_日常跟踪]]

- 上次判断:
- 本次变化:
- 判断被验证的部分:
- 判断错误的部分:

## 五、关键观察条件

- 上涨验证条件:
- 下跌风险条件:
- 需要继续跟踪的数据:
- 下次复盘时间:

## 六、操作计划

- 当前动作:
- 买入条件:
- 卖出条件:
- 止损条件:
- 仓位上限:

## 七、事后复盘

> 在后续日期补充,避免只记录预测、不检验结果。

- 实际走势:
- 原判断是否正确:
- 错误原因:
- 可复用经验:

其中最关键的字段是:

yaml
stock_id
code
name
analysis_date
analysis_type
rating
tags

这些字段以后可以直接建立数据库索引。

五、为每只股票建立“股票档案页”

例如:

text
股票档案/SH600519-贵州茅台.md

内容可以是:

markdown
---
stock_id: SH600519
code: "600519"
name: 贵州茅台
market: A股
exchange: 上交所
industry: 白酒
aliases:
  - 茅台
---

# 贵州茅台 SH600519

## 公司定位

高端白酒龙头。

## 长期投资逻辑

1.
2.
3.

## 核心风险

1.
2.
3.

## 估值锚点

- 乐观:
- 中性:
- 悲观:

## 最新判断

- 当前评级:
- 当前仓位:
- 最新分析:

## 历史分析

通过 Obsidian Dataview 或自动脚本生成。

如果安装 Obsidian 的 Dataview 插件,可以在档案页自动列出该股票全部记录:

dataview
TABLE
  analysis_date AS "日期",
  analysis_type AS "类型",
  rating AS "评级",
  price AS "价格",
  confidence AS "置信度"
FROM "分析记录"
WHERE stock_id = "SH600519"
SORT analysis_date DESC

这样打开“贵州茅台档案页”,就能看到它的全部历史分析,而且新文件会自动加入,不需要手工维护目录。

六、具体查询方式

  1. 按股票代码查全部记录

在 Obsidian 中搜索:

text
stock_id: SH600519

或者直接搜索:

text
SH600519
  1. 按股票名称查询
text
name: 贵州茅台
  1. 查询某只股票的估值分析
text
stock_id: SH600519 analysis_type: 估值分析
  1. 查询某只股票在某一年的记录
text
stock_id: SH600519 analysis_date: 2026
  1. 查询所有曾经给出“买入”评级的记录
text
rating: 买入
  1. 查询某个行业的全部记录
text
industry: 白酒

七、Markdown 和 HTML 怎么处理

建议:

text
Markdown = 原始数据、唯一真实来源
HTML = 阅读、展示、分享版本

不要分别编辑 Markdown 和 HTML,否则时间长了以后两份内容很容易不一致。

正确流程应该是:

text
编写 Markdown
    ↓
自动生成 HTML
    ↓
更新 SQLite 索引

HTML 文件应保留同样的基础命名:

text
Markdown:
分析记录/SH600519/2026/2026-09-04_SH600519_贵州茅台_收盘复盘.md

HTML:
HTML报告/SH600519/2026/2026-09-04_SH600519_贵州茅台_收盘复盘.html

如果 HTML 只是由 Markdown 生成,而且随时可以重新生成,也可以不长期备份全部 HTML,只备份 Markdown、模板和生成脚本。

八、记录多了以后增加 SQLite 索引

当记录达到几千篇以上,可以用脚本扫描所有 Markdown 的 YAML 元数据,写入 SQLite:

sql
CREATE TABLE research_records (
    id TEXT PRIMARY KEY,
    stock_id TEXT NOT NULL,
    code TEXT,
    name TEXT,
    market TEXT,
    industry TEXT,
    analysis_date TEXT NOT NULL,
    analysis_type TEXT,
    rating TEXT,
    price REAL,
    confidence TEXT,
    md_path TEXT NOT NULL,
    html_path TEXT,
    title TEXT,
    content TEXT
);

建立索引:

sql
CREATE INDEX idx_research_stock_date
ON research_records(stock_id, analysis_date);

CREATE INDEX idx_research_name
ON research_records(name);

CREATE INDEX idx_research_type
ON research_records(analysis_type);

以后查询贵州茅台全部记录:

sql
SELECT
    analysis_date,
    analysis_type,
    rating,
    price,
    md_path
FROM research_records
WHERE stock_id = 'SH600519'
ORDER BY analysis_date DESC;

也可以建立 SQLite FTS5 全文检索,查询历史上所有提到“渠道库存”“批价下跌”“高股息”的分析内容。

九、备份建议

至少使用“三层保存”:

  1. 本地工作库
    Obsidian Vault 或普通文件夹。

  2. Git 版本管理
    主要管理 Markdown、模板和脚本,可以查看每次分析被修改的历史。

  3. 异地备份
    OneDrive、Dropbox、Google Drive、NAS 或对象存储。

建议:

text
纳入 Git:
- Markdown
- 模板
- stocks.csv
- 自动化脚本

按情况决定是否纳入 Git:
- HTML

不建议纳入 Git:
- 临时文件
- 缓存
- 数据库日志

SQLite 数据库如果能由 Markdown 重新生成,它也属于派生数据,不应成为唯一数据源。

十、最适合你的最终方案

推荐采用:

text
Obsidian
+ Markdown 作为原始记录
+ YAML 结构化元数据
+ 股票代码分目录
+ 股票档案页
+ Dataview 自动展示历史记录
+ SQLite/FTS5 作为后期检索引擎
+ Git 和云盘双重备份

这套方案的优势是:

  • 现在就能使用,不需要先开发复杂系统。
  • 能按代码、名称、日期、行业、评级和分析类型查询。
  • 一只股票的所有历史判断可以自动汇总。
  • 能将“当时判断”和“后来实际结果”串起来复盘。
  • 将来可以接入 AI,对某只股票历次分析进行自动总结。
  • 不会被某个笔记软件锁定,Markdown 随时可以迁移。

最重要的一点:除了保存“当时怎么看”,还要在每篇记录里预留“事后验证”字段。否则文件再多,也只是观点档案,不是真正可复用的投资复盘系统。

历元智能投研 · 由Antares多因子选股系统驱动知识库