106 lines
1.7 KiB
Markdown
106 lines
1.7 KiB
Markdown
# Markdown Sink 设计
|
||
|
||
## 1. 目标
|
||
|
||
第一版 sink 不直接绑定外部平台,而是先落一个稳定的 `Markdown sink`。
|
||
|
||
原因:
|
||
|
||
- 可审计
|
||
- 可版本化
|
||
- 易迁移
|
||
- 可直接兼容 Obsidian / 通用 Markdown 知识库
|
||
|
||
## 2. 统一输入
|
||
|
||
Markdown sink 读取统一的 `SinkInput`:
|
||
|
||
- `item`
|
||
- `article`
|
||
- `summary`
|
||
- `filter_decision`
|
||
- `metadata`
|
||
|
||
这样未来扩展 Notion sink、Webhook sink 时,可以继续复用同一套上游输入结构。
|
||
|
||
## 3. 目录结构
|
||
|
||
当前建议目录结构:
|
||
|
||
```text
|
||
knowledge-base/
|
||
inbox/
|
||
review/
|
||
archive/
|
||
```
|
||
|
||
具体落盘规则:
|
||
|
||
- `keep` -> `knowledge-base/inbox/YYYY/YYYY-MM/`
|
||
- `review` -> `knowledge-base/review/YYYY/YYYY-MM/`
|
||
- `drop` -> `knowledge-base/archive/YYYY/YYYY-MM/`
|
||
|
||
## 4. 文件命名
|
||
|
||
文件名格式:
|
||
|
||
```text
|
||
YYYY-MM-DD-title-slug.md
|
||
```
|
||
|
||
例如:
|
||
|
||
```text
|
||
2026-03-21-kimi-cursor.md
|
||
```
|
||
|
||
## 5. Markdown 内容结构
|
||
|
||
输出采用:
|
||
|
||
- YAML frontmatter
|
||
- 摘要区
|
||
- 要点区
|
||
- 过滤决策区
|
||
- 原文信息区
|
||
- 正文摘录区
|
||
|
||
frontmatter 中保留:
|
||
|
||
- `title`
|
||
- `url`
|
||
- `source_id`
|
||
- `item_id`
|
||
- `extract_id`
|
||
- `category`
|
||
- `worth_keeping`
|
||
- `decision`
|
||
- `priority`
|
||
- `topics`
|
||
- `keywords`
|
||
- `labels`
|
||
- `published_at`
|
||
- `saved_at`
|
||
- `quality_flags`
|
||
|
||
## 6. 当前落地位置
|
||
|
||
- sink 模型:
|
||
- `src/summary_mcp/models/sink.py`
|
||
- Markdown sink:
|
||
- `src/summary_mcp/sinks/markdown.py`
|
||
- 本地运行脚本:
|
||
- `scripts/run_markdown_sink.py`
|
||
|
||
## 7. 当前阶段结论
|
||
|
||
第一版知识库不先绑定 Notion、Lumina 或数据库,而是先让过滤后的内容稳定进入 Markdown 知识库。
|
||
|
||
只要这层格式稳定,后续可以继续扩展:
|
||
|
||
- Obsidian Vault
|
||
- Logseq
|
||
- Notion
|
||
- Webhook
|
||
- 自定义数据库 sink
|