🗺️ MOC 笔记法
MOC (Map of Content) 是一种强大的知识组织方法,帮助你构建清晰的知识导航结构,让知识库易于探索和维护。
🎯 学习目标
- 理解 MOC 的核心理念
- 掌握 MOC 的创建和维护方法
- 学习 MOC 与其他组织方法的结合
- 建立个人的知识导航体系
💡 核心概念
什么是 MOC
markdown
# MOC 定义
Map of Content (内容地图) 是一种:
- 主题笔记的聚合器
- 知识网络的导航枢纽
- 替代传统文件夹的灵活结构
# 与普通笔记的区别
普通笔记:承载具体内容
MOC 笔记:组织相关笔记,提供导航
# 类比
MOC = 目录页 + 导航站 + 知识索引为什么需要 MOC
markdown
# 解决的问题
❌ 文件夹层级太深
→ MOC 扁平化组织
❌ 相关笔记分散各处
→ MOC 统一聚合
❌ 知识网络难以浏览
→ MOC 提供清晰入口
❌ 笔记越积越乱
→ MOC 有序归档
# MOC 的优势
✅ 灵活:随时添加、删除、重组
✅ 直观:一目了然的知识结构
✅ 连接:强化笔记间的关联
✅ 成长:随知识积累自然演进🏗️ MOC 结构设计
基础结构
markdown
# MOC 基本模板
---
type: moc
created: {{date}}
tags: [moc, 主题]
---
# 🗺️ [主题名称] MOC
## 📋 概述
[简短描述这个主题是什么,为什么重要]
## 🔑 核心概念
- [[概念 1]]
- [[概念 2]]
- [[概念 3]]
## 📚 学习资源
### 入门
- [[入门教程 1]]
- [[入门教程 2]]
### 进阶
- [[进阶内容 1]]
- [[进阶内容 2]]
## 🛠️ 实践应用
- [[案例 1]]
- [[案例 2]]
## 🔗 相关主题
- [[相关 MOC 1]]
- [[相关 MOC 2]]
## 📝 待完善
- [ ] 待补充的内容
- [ ] 需要深入研究的方向层级结构
markdown
# 三层 MOC 架构
## 第一层:领域 MOC
位置:根目录
示例:
- [[000 Home MOC]] # 总入口
- [[100 工作 MOC]] # 工作领域
- [[200 学习 MOC]] # 学习领域
- [[300 生活 MOC]] # 生活领域
## 第二层:主题 MOC
位置:领域目录
示例:
- [[110 项目管理 MOC]] # 工作子主题
- [[210 编程学习 MOC]] # 学习子主题
- [[310 健康管理 MOC]] # 生活子主题
## 第三层:项目 MOC
位置:主题目录
示例:
- [[111 项目 A MOC]] # 具体项目
- [[211 Python 学习 MOC]] # 具体学习计划
- [[311 运动计划 MOC]] # 具体生活项目
## 层级关系示意
000 Home MOC
├── 100 工作 MOC
│ ├── 110 项目管理 MOC
│ │ ├── 111 项目 A MOC
│ │ └── 112 项目 B MOC
│ └── 120 技能提升 MOC
├── 200 学习 MOC
│ ├── 210 编程学习 MOC
│ │ ├── 211 Python MOC
│ │ └── 212 JavaScript MOC
│ └── 220 读书笔记 MOC
└── 300 生活 MOC
├── 310 健康管理 MOC
└── 320 财务管理 MOC📝 MOC 创建方法
从零创建
markdown
# 创建步骤
## 1. 确定主题
选择一个:
- 你正在研究的领域
- 你想深入了解的话题
- 你有大量笔记的主题
## 2. 收集相关笔记
使用 Dataview 查询:
```dataview
LIST
FROM ""
WHERE contains(file.name, "主题关键词")
OR contains(file.tags, "#主题标签")
SORT file.ctime DESC3. 分类整理
将笔记按逻辑分组:
- 按类型:概念、教程、案例
- 按难度:入门、进阶、高级
- 按时间:历史、现状、未来
4. 创建 MOC 笔记
使用模板创建 填充分类好的链接 添加概述和说明
5. 建立连接
从上层 MOC 链接到新 MOC 在相关笔记中引用 MOC
### 从现有笔记生成
```dataviewjs
// 自动生成 MOC 内容
const topic = "Obsidian"; // 替换为你的主题
const pages = dv.pages()
.where(p =>
p.file.name.includes(topic) ||
p.file.tags.includes(`#${topic.toLowerCase()}`)
)
.sort(p => p.file.name);
let mocContent = `---
type: moc
created: ${dv.date("today").toFormat("yyyy-MM-dd")}
tags: [moc, ${topic.toLowerCase()}]
---
# 🗺️ ${topic} MOC
## 📋 概述
[待补充]
## 📚 相关笔记
`;
for (let page of pages) {
mocContent += `- [[${page.file.link}]]\n`;
}
mocContent += `
## 📝 待完善
- [ ]
`;
dv.paragraph("MOC 内容已生成,请复制创建新笔记:");
dv.paragraph("```markdown\n" + mocContent + "\n```");🔄 MOC 维护策略
定期审查
markdown
# MOC 审查清单
## 每周审查(5 分钟)
- [ ] 检查本周新增笔记是否需要添加到 MOC
- [ ] 清理已删除笔记的链接
- [ ] 更新"待完善"列表
## 每月审查(30 分钟)
- [ ] 检查 MOC 结构是否合理
- [ ] 合并或拆分过于膨胀的 MOC
- [ ] 添加新发现的连接
- [ ] 更新概述描述
## 季度审查(1 小时)
- [ ] 评估 MOC 体系是否需要重构
- [ ] 检查层级结构是否清晰
- [ ] 删除不再相关的 MOC
- [ ] 创建新领域的 MOC自动化维护
dataviewjs
// 检测未在 MOC 中收录的笔记
const mocLinks = new Set();
const allMocs = dv.pages().where(p => p.type === "moc");
for (let moc of allMocs) {
for (let link of moc.file.outlinks) {
mocLinks.add(link.path);
}
}
const unorganized = dv.pages()
.where(p => p.type !== "moc")
.where(p => !mocLinks.has(p.file.path))
.where(p => !p.file.folder.startsWith("Templates"))
.where(p => !p.file.folder.startsWith("Archive"));
dv.header(3, "📭 未被 MOC 收录的笔记");
dv.table(
["笔记", "创建时间"],
unorganized
.sort(p => p.file.ctime, 'desc')
.slice(0, 20)
.map(p => [p.file.link, p.file.ctime.toFormat("yyyy-MM-dd")])
);
if (unorganized.length > 0) {
dv.paragraph(`⚠️ 发现 ${unorganized.length} 篇笔记未被 MOC 收录`);
}🔗 MOC 与其他方法结合
MOC + PARA
markdown
# 结合 PARA 的 MOC 结构
## Projects MOC
管理进行中的项目
### 结构
- 进行中的项目链接
- 项目进度追踪
- 临时性内容
## Areas MOC
管理责任领域
### 结构
- 各领域的长期目标
- 关键指标
- 持续关注的内容
## Resources MOC
管理知识资源
### 结构
- 主题知识库
- 参考资料
- 学习资源
## Archives MOC
管理归档内容
### 结构
- 已完成项目
- 不再活跃的领域
- 历史记录MOC + Zettelkasten
markdown
# MOC 作为 Zettelkasten 的索引层
## Zettelkasten 结构
原子笔记 ← 单个想法/概念
↓
主题笔记 ← 多个原子笔记聚合
↓
MOC ← 多个主题笔记导航
## 工作流
1. **捕捉** → 创建原子笔记
2. **连接** → 原子笔记互相链接
3. **聚合** → 相关笔记形成主题
4. **组织** → 主题笔记汇入 MOC
## 示例
原子笔记:
- [[永久笔记:复利效应]]
- [[永久笔记:边际成本]]
- [[永久笔记:机会成本]]
主题笔记:
- [[经济学核心概念]](聚合原子笔记)
MOC:
- [[经济学 MOC]](包含主题笔记)💡 高级技巧
动态 MOC
markdown
# 使用 Dataview 创建自动更新的 MOC
---
type: moc-dynamic
---
# 🗺️ 项目 MOC(自动更新)
## 🟢 进行中的项目
```dataview
TABLE
progress as "进度",
deadline as "截止日期"
FROM "projects"
WHERE status = "active"
SORT deadline ASC📅 本月到期
dataview
TABLE
file.link as "项目",
deadline as "截止日期",
(deadline - date(today)).days + " 天" as "剩余"
FROM "projects"
WHERE deadline >= date(today)
AND deadline <= date(today) + dur(30 days)
SORT deadline ASC✅ 最近完成
dataview
TABLE
completed as "完成时间"
FROM "projects"
WHERE status = "done"
AND completed >= date(today) - dur(30 days)
SORT completed DESC
LIMIT 10
### 嵌套 MOC
```markdown
# 多级嵌套 MOC 示例
## 主 MOC
---
type: moc
---
# 🗺️ 学习 MOC
## 编程学习
> 详见 [[编程学习 MOC]]
## 语言学习
> 详见 [[语言学习 MOC]]
## 专业技能
> 详见 [[专业技能 MOC]]
## 子 MOC:编程学习 MOC
---
type: moc
---
# 🗺️ 编程学习 MOC
## 前端开发
> 详见 [[前端开发 MOC]]
## 后端开发
> 详见 [[后端开发 MOC]]
## 数据科学
> 详见 [[数据科学 MOC]]可视化 MOC
markdown
# 使用 Canvas 可视化 MOC
1. 创建新 Canvas
2. 添加 MOC 笔记到中心
3. 围绕中心添加相关笔记
4. 用箭头连接关系
5. 用颜色区分类型
# Canvas 布局建议
中心:主题 MOC
├── 上方:核心概念
├── 下方:实践应用
├── 左侧:学习资源
├── 右侧:相关主题
└── 四角:待完善内容📚 实战案例
案例:技术学习 MOC
markdown
---
type: moc
created: 2024-01-01
tags: [moc, technology, learning]
---
# 🗺️ 技术学习 MOC
## 📋 概述
个人技术学习路线图和资源汇总,持续更新中。
## 🎯 当前重点
- React 18 新特性
- TypeScript 高级类型
- Node.js 性能优化
## 📚 学习路线
### 前端开发
详见 [[前端开发 MOC]]
**核心技术**
- [[HTML & CSS 基础]]
- [[JavaScript 深入]]
- [[React 实战]]
- [[Vue.js 入门]]
**工具链**
- [[Vite 使用指南]]
- [[Webpack 配置]]
- [[ESLint 规范]]
### 后端开发
详见 [[后端开发 MOC]]
**核心技术**
- [[Node.js 基础]]
- [[Python Web 开发]]
- [[数据库设计]]
### DevOps
- [[Docker 容器化]]
- [[CI/CD 流水线]]
- [[云服务部署]]
## 🛠️ 实践项目
- [[个人博客项目]]
- [[任务管理系统]]
- [[API 服务开发]]
## 📖 学习资源
### 在线课程
- [[Coursera 课程笔记]]
- [[Udemy 学习记录]]
### 书籍笔记
- [[JavaScript 高级程序设计]]
- [[深入理解计算机系统]]
## 📝 待学习
- [ ] GraphQL
- [ ] WebSocket
- [ ] 微服务架构
## 🔗 相关主题
- [[读书笔记 MOC]]
- [[项目笔记 MOC]]案例:项目管理 MOC
markdown
---
type: moc
created: 2024-01-01
tags: [moc, project-management]
---
# 🗺️ 项目管理 MOC
## 📋 概述
项目管理方法论、工具和最佳实践汇总。
## 🎯 核心方法
### 敏捷开发
- [[Scrum 指南]]
- [[看板方法]]
- [[Sprint 规划]]
### 传统方法
- [[瀑布模型]]
- [[甘特图制作]]
- [[关键路径法]]
## 🛠️ 工具使用
- [[Obsidian 项目管理]]
- [[Notion 项目模板]]
- [[Jira 配置指南]]
## 📊 模板资源
- [[项目计划模板]]
- [[会议记录模板]]
- [[复盘模板]]
## 📚 学习资源
### 书籍
- [[《敏捷软件开发》读书笔记]]
- [[《项目管理知识体系指南》]]
### 课程
- [[PMP 备考笔记]]
## 🔗 相关主题
- [[时间管理 MOC]]
- [[团队协作 MOC]]🐛 常见问题
MOC 太大怎么办
markdown
# 解决方案
1. **拆分为子 MOC**
超过 50 条链接时考虑拆分
2. **使用动态内容**
Dataview 自动聚合减少手动维护
3. **分级展示**
使用折叠、详情标签组织
4. **定期归档**
将历史内容移至归档区域MOC 和文件夹如何配合
markdown
# 推荐策略
## 文件夹:物理存储
- 用于分类存放文件
- 保持简单层级(2-3 层)
## MOC:逻辑组织
- 用于建立导航结构
- 可以跨越文件夹边界
## 示例
文件夹结构:
/Projects/(项目)
/Learning/(学习)
/Life/(生活)
MOC 结构:
[[项目 MOC]] → 聚合 /Projects 和其他位置的项目笔记
[[学习 MOC]] → 聚合 /Learning 和其他位置的学习笔记📚 进阶资源
示例 MOC
相关讨论
🎯 小结
| 方面 | 要点 |
|---|---|
| 定义 | 知识导航枢纽,聚合相关笔记 |
| 结构 | 三层架构:领域 → 主题 → 项目 |
| 创建 | 确定主题 → 收集笔记 → 分类整理 → 建立连接 |
| 维护 | 定期审查、自动化检测、及时更新 |
| 结合 | 可与 PARA、Zettelkasten 配合使用 |
| 技巧 | 动态内容、嵌套结构、Canvas 可视化 |
📖 相关内容
- [[note-taking-methods|笔记方法论]]
- [[linking-thinking|链接思维]]
- [[knowledge-graph|知识图谱]]
- [[dataview|Dataview 入门]]
💡 提示:MOC 的核心价值在于导航和发现,好的 MOC 应该像一张清晰的地图,让你快速找到想要的内容,同时发现意想不到的连接。