# Content Brain 内容大脑Skill

> 这是一个完整的个人知识创作系统。它以Obsidian为载体，通过AI持续维护一个结构化、可生长的内容资产库

- Skill: `loongyowl/content-brain-skill` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add loongyowl/content-brain-skill`
- Raw SKILL.md: https://api.skillmd.com/api/skills/loongyowl/content-brain-skill/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: loongyowl (https://skillmd.com/u/loongyowl)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/loongyowl/content-brain-skill

---


# Content Brain — Obsidian 内容大脑 Skill

**版本**: 1.0
**作者**: 妙音集 AI 工作流
**最后更新**: 2026-04-10
**兼容**: Claude Code, Claude Desktop, 任何支持 SKILL.md 的 AI 工具
**目标用户**: 妙音集内容创作者

---

## 概述

这是一个完整的个人知识创作系统。它以 Obsidian 为载体，通过 AI 持续维护一个结构化、可生长的内容资产库。

### 核心能力

1. **内容消化** — 将任意文本转化为结构化笔记
2. **自动分类** — 判断内容类型并关联主题
3. **双向链接** — 自动建立内容之间的关系
4. **选题发现** — 扫描知识库，发现内容空白
5. **脚本生成** — 从内容库提取素材，生成口播脚本
6. **脚本审核** — 检查重复、风格、质量问题
7. **反馈学习** — 从修改意见中学习，持续优化

---

## 文件结构规范

```
myobsidian/
├── Inbox/
│   ├── Clippings/           # Web Clipper 入口
│   └── Import/              # 手动导入 MD
├── content/
│   ├── insights/             # 感悟笔记
│   ├── themes/              # 主题分类（每主题一张笔记）
│   ├── stances/             # 核心观点
│   ├── series/              # 系列地图
│   ├── drafts/              # 选题草稿
│   ├── formats/             # 格式实验
│   └── clips/               # 已处理的剪藏
├── outputs/
│   └── scripts/             # 口播脚本（含版本和反馈）
├── graph/
│   ├── edges.jsonl          # 内容关系边
│   └── gaps.md              # 选题空白区
├── templates/
│   ├── content-card.md      # 通用卡片模板
│   ├── insight.md           # 感悟模板
│   ├── theme.md             # 主题模板
│   └── script.md            # 脚本模板
├── content-brain.md         # 系统规则说明
├── profile.md               # 内容偏好画像
└── feedback-log.md          # 反馈经验日志
```

---

## Frontmatter 规范

所有内容笔记必须使用以下 frontmatter：

```yaml
---
uid: string           # 唯一ID（格式：type-name，如 theme-growth）
type: string          # 类型：insight | theme | stance | series | draft | script | clip | meta
date: string          # ISO 日期：YYYY-MM-DD 或 YYYY-MM-DDTHH:MM:SS
title: string         # 标题
category: string      # 分类（同 type）
status: string        # 状态：raw | processed | idea | script | reviewed | published
rating: number|null   # 价值评分 1-7
tags: string[]        # 标签（最多 5 个）
themes: string[]      # 关联主题（Obsidian 链接格式）
related: string[]     # 相关笔记（Obsidian 链接格式）
source: string|null   # 来源：URL 或书籍名
created: string       # 创建时间戳
modified: string      # 修改时间戳
---
```

### type 类型说明

| type | 说明 | 保存位置 |
|------|------|---------|
| `insight` | 感悟/文章笔记 | content/insights/ |
| `theme` | 主题分类 | content/themes/ |
| `stance` | 核心观点/立场 | content/stances/ |
| `series` | 内容系列 | content/series/ |
| `draft` | 选题草稿 | content/drafts/ |
| `script` | 口播脚本 | outputs/scripts/ |
| `clip` | 网页剪藏 | content/clips/ |
| `meta` | 元信息文件 | 根目录 |

### status 状态说明

| status | 含义 |
|--------|------|
| `raw` | 原始状态，未处理 |
| `processed` | 已分析分类 |
| `idea` | 已成为选题 |
| `script` | 已有脚本 |
| `reviewed` | 已审核 |
| `published` | 已发布 |

---

## 技能 1：content-brain（内容消化）

### 触发场景

- 用户说「消化这篇」「处理这个文件」「分析这段内容」
- 用户粘贴了一段文本需要整理入库

### 操作流程

```
1. 提取内容
   - 标题：从文本中提炼，或用「日期+关键词」格式
   - 摘要：3-5 句话概括核心
   - 核心观点：用列表提取关键论点
   - 金句：原文中值得引用的原话

2. 判断类型
   - 知识类：介绍概念、方法论 → 归入 insights/
   - 观点类：表达立场、看法 → 归入 stances/
   - 故事类：个人经历、案例 → 归入 insights/
   - 素材类：数据、引用、案例 → 归入 clips/

3. 关联主题
   读取 content/themes/ 下的主题笔记，
   判断内容属于哪个主题，填入 frontmatter 的 themes 字段

4. 打标签
   - 根据内容提取 2-5 个标签
   - 优先从现有标签库中选择，新增标签需简短（1-2 个词）

5. 建立链接
   扫描 content/ 下已有笔记，找到相关的内容，
   填入 frontmatter 的 related 字段（[[文件名]] 格式）

6. 更新图谱
   在 graph/edges.jsonl 中追加新的关系边（如有）
   如发现新的选题空白，更新 graph/gaps.md

7. 保存文件
   按 type 保存到对应目录
   自动更新文件名的 uid 避免重复
```

### 输出格式

```markdown
---
[完整 frontmatter]
---

# [标题]

## 摘要
[3-5 句]

## 核心观点
- [观点1]
- [观点2]
- [观点3]

## 关键引用
> "[金句1]"
> "[金句2]"

## 我的思考
[你的理解或感悟]

## 关联
- [[相关主题1]]
- [[相关笔记1]]
```

---

## 技能 2：web-clip（网页剪藏处理）

### 触发场景

- 用户说「处理剪藏」「分析 inbox 里的文章」「有新的剪藏要消化」
- 检测到 Inbox/Clippings/ 或 Inbox/Import/ 有新文件

### 操作流程

```
1. 扫描入口目录
   读取 Inbox/Clippings/ 和 Inbox/Import/ 下所有 .md 文件

2. 批量处理
   对每个文件执行 content-brain 的流程

3. 特殊情况处理
   - 如果原文质量低（水分多）：只提取核心观点，不保存全文
   - 如果是重复内容：合并到已有笔记，标注来源
   - 如果是重要文献：创建 standalone 笔记，放入 insights/

4. 归档
   处理完成后，将文件从 Inbox/ 移动到 content/clips/
   或直接归档到对应的 content/ 子目录

5. 生成摘要报告
   报告处理了哪些文件，分别归到了哪里
```

### 重要规则

- Web Clipper 导出的文件可能包含大量 HTML 残留，**必须先清理**
- 提取的正文内容需要去广告、去导航、去噪音
- 图片保留原始 URL，不下载到本地（保持 Obsidian 的外部引用）

---

## 技能 3：idea-generator（选题灵感）

### 触发场景

- 用户说「给我选题」「我想做一期视频」「最近有什么可以做的」
- 用户说「我在准备 [主题] 的内容，有什么角度」

### 操作流程

```
1. 读取你的 profile
   - 了解你的语言风格
   - 了解你的偏好话题
   - 了解哪些话题效果最好

2. 扫描内容库
   - 读取 content/ 下最近的新笔记
   - 读取 graph/gaps.md（选题空白）
   - 读取 graph/edges.jsonl（了解已覆盖的领域）

3. 扫描已发布内容
   读取 outputs/scripts/ 下 status=published 的脚本，
   确保新选题不和已发内容重复或高度雷同

4. 生成选题方向
   输出 3-5 个选题，每个选题包含：
   - 选题名称
   - 核心角度（还没人讲过的切入点）
   - 关联素材（哪些现有笔记可以用）
   - 预计时长
   - 预计难度（素材充足程度）

5. 推荐优先级
   按「素材充足度 × 差异化程度 × 个人偏好匹配度」排序
```

### 输出格式

```markdown
# 选题灵感

## 🎯 优先推荐

### [选题1]
- **角度**：[差异化切入点]
- **素材**：可用的现有笔记 [[笔记1]], [[笔记2]]
- **预计时长**：X 分钟
- **预计难度**：🟢 素材充足 / 🟡 需要补充 / 🔴 素材稀缺

### [选题2]
...

## 💡 备选

[其他选题...]

## 📌 选题空白提醒
[来自 gaps.md 的提示]
```

---

## 技能 4：script-writer（口播脚本生成）

### 触发场景

- 用户说「写脚本」「帮我生成口播」「帮我写文案」
- 用户选定了 idea-generator 输出的选题

### 操作流程

```
1. 读取 profile.md
   理解用户的风格偏好：
   - 喜欢什么开场方式
   - 常用词汇 vs 避雷词汇
   - 段落长度偏好
   - 是否有固定的口头禅

2. 收集素材
   - 读取相关 insights/ 下的笔记
   - 读取相关 themes/ 下的主题笔记
   - 读取相关 stances/ 下的观点
   - 从 clips/ 中提取可用素材

3. 生成脚本
   按以下结构生成：
   - 开场（00:00）：[吸引注意力的方式]
   - 引入（00:XX）：[铺垫背景]
   - 核心内容1（0X:XX）：[第一观点 + 案例]
   - 核心内容2（0X:XX）：[第二观点 + 案例]
   - 核心内容3（0X:XX）：[第三观点 + 案例]
   - 总结（0X:XX）：[金句 + CTA]

4. 保存文件
   - 路径：outputs/scripts/YYYY-MM-DD_主题名_v1.md
   - 更新 frontmatter 的 status 为 script
   - 记录素材来源

5. 提示用户
   - 告知生成了什么
   - 告知从哪些笔记中提取了素材
   - 告知如何提出修改意见
```

### 脚本格式要求

```markdown
---
[frontmatter，含 type=script, status=script]
---

# [标题]

> **脚本概要**：[一句话]
> **目标受众**：[描述]
> **预计时长**：[X 分钟]
> **视频格式**：口播

---

## 结构大纲
[时间戳 + 内容摘要]

## 完整口播稿

### [00:00] 开场
[逐字逐句]

### [00:XX] [段落标题]
[逐字逐句]

...

---

## 素材来源
| 类型 | 笔记 | 摘录 |
|------|------|------|
```

### 重要规则

- **时长控制**：每分钟约 200-250 字，根据语速调整
- **语言口语化**：避免书面语，多用短句
- **避免重复**：不要使用 profile.md 中标记为「避雷」的词汇
- **引用规范**：引用原文时注明来源
- **逻辑清晰**：每个观点至少有一个具体案例或故事支撑

---

## 技能 5：review-script（脚本审核）

### 触发场景

- 用户说「审核」「检查一下」「有没有问题」
- 脚本生成后自动触发（可选）

### 审核维度

```
1. 内容重复检查
   - 扫描已发布的脚本（outputs/scripts/ 中 status=published）
   - 检查新脚本的核心观点是否和已发内容高度重复
   - 标记重复程度（无重复 / 轻微重复 / 高度重复）

2. 风格一致性
   - 对照 profile.md 检查：
     - 用词偏好是否符合
     - 段落长度是否合适
     - 是否有避雷词汇
   - 标记需要调整的地方

3. 逻辑完整性
   - 检查观点是否有案例支撑
   - 检查过渡是否自然
   - 检查结尾是否有 CTA（Call to Action）

4. 时长准确性
   - 根据字数估算实际时长
   - 告知实际可能偏差

5. 敏感表达检查
   - 检查是否有潜在争议性表达
   - 检查是否有夸大或虚假表述
```

### 输出格式

```markdown
# 脚本审核报告

## 🔍 内容重复检查
- **重复程度**：🟢 无重复 / 🟡 轻微重复 / 🔴 高度重复
- **说明**：...

## ✍️ 风格一致性
- **用词**：✅ 符合 / ⚠️ 需调整
- **段落长度**：✅ 合适 / ⚠️ 需调整
- **避雷词汇**：✅ 无 / ⚠️ 发现：...
- **调整建议**：...

## 🧠 逻辑完整性
- **观点支撑**：✅ 充足 / ⚠️ 需补充案例
- **过渡流畅度**：✅ 流畅 / ⚠️ 需优化
- **CTA**：✅ 有 / ❌ 无
- **建议**：...

## ⏱️ 时长估算
- **估算时长**：X 分钟
- **字数**：XXX 字
- **评估**：🟢 合适 / 🟡 略长 / 🟡 略短

## ⚠️ 敏感表达
- **风险**：🟢 低 / 🟡 中 / 🔴 高
- **问题点**：...

## 📊 综合评分
[1-10 分评价]

## 💡 优化建议
[具体可操作的改进建议]
```

---

## 反馈 → 经验沉淀

### 反馈收集

当用户提出修改意见时：

```
1. 记录反馈
   追加到 outputs/scripts/[日期]_主题_feedback.md
   格式：
```
   ## 反馈 v1
   - 时间：YYYY-MM-DD HH:MM
   - 意见：[用户的原话或 AI 总结]
   - 问题类型：[风格 / 逻辑 / 时长 / 其他]
   ```

2. 分类处理
   - 风格类 → 更新 profile.md
   - 逻辑类 → 标记到反馈日志
   - 时长类 → 记录时长偏好

3. 提炼长期记忆
   定期（月度）将 feedback-log.md 提炼为 profile.md 的更新
   ```

### 反馈类型分类

| 类型 | 处理方式 | 沉淀位置 |
|------|---------|---------|
| 风格偏好 | 更新 profile.md | `profile.md` |
| 避雷词汇 | 更新 profile.md | `profile.md` |
| 逻辑漏洞 | 记录到反馈日志 | `feedback-log.md` |
| 时长偏差 | 更新 profile.md | `profile.md` |
| 重复观点 | 更新 edges.jsonl | `graph/edges.jsonl` |

---

## 图谱维护

### edges.jsonl 格式

```jsonl
{"from": "来源笔记名", "to": "目标笔记名", "rel": "关系类型", "note": "备注"}
```

### 关系类型

| rel | 说明 |
|-----|------|
| `supports` | A 支撑 B |
| `extends` | A 延伸 B |
| `contradicts` | A 与 B 矛盾 |
| `example_of` | A 是 B 的例证 |
| `responds_to` | A 回应 B |
| `part_of` | A 属于 B |

### gaps.md 维护规则

- 每处理 5 个新的 insights 或 stances，AI 应主动检查 gaps.md
- 如果发现新的未覆盖角度，追加到 gaps.md 的对应区域
- 如果某个空白已被内容覆盖，将其从 gaps.md 移除或标记

---

## profile.md 格式

```markdown
# 内容偏好画像

## 语言风格
- 句子长度：短句为主，避免长段落
- 语气：[描述]
- 口头禅：[有无]

## 开场偏好
- 首选开场方式：用故事开场 / 用问题开场 / 用数据开场
- 禁止的开场：[描述]

## 避雷清单
- 词汇：
- 表达方式：
- 话题雷区：

## 常青选题
- 效果最好的话题类型：...
- 效果最好的表达方式：...

## 时长偏好
- 偏好时长：X-Y 分钟
- 每分钟字数：约 XXX 字

## 脚本结构偏好
- 核心内容数量：X 个观点
- 是否需要案例：是 / 否
- CTA 类型：...
```

---

## 快速命令参考

| 场景 | 触发词 |
|------|--------|
| 处理新剪藏 | 「帮我消化 inbox 里的文章」 |
| 获取选题灵感 | 「给我选题灵感」 |
| 生成口播脚本 | 「帮我写一个 X 分钟的口播脚本，主题是 Y」 |
| 审核脚本 | 「帮我审核这个脚本」 |
| 提出修改意见 | 「帮我修改脚本，意见：...」 |
| 查看内容库 | 「我最近积累了哪些关于 X 的内容」 |
| 更新偏好 | 「我发现自己不喜欢...以后避免用...」 |

---

*Content Brain Skill v1.0 | 妙音集内容大脑*

