# Obsidian Feishu Sync

> obsidian-feishu-sync — Obsidian ↔ 飞书双向同步工作流：从飞书导入文档到 Obsidian（自动添加属性标签、清理格式、更新 FACT.md），从 Obsidian 上传文档到飞书。触发词：obsidian-feishu-sync、obsidian 同步、飞书同步、飞书导入、导入飞书文档、上传文档到飞书。适用于 RITFIT 品牌部的知识管理工作流。

- Skill: `nana7536/obsidian-feishu-sync` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add nana7536/obsidian-feishu-sync`
- Raw SKILL.md: https://api.skillmd.com/api/skills/nana7536/obsidian-feishu-sync/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: nana7536 (https://skillmd.com/u/nana7536)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/nana7536/obsidian-feishu-sync

---


# Obsidian ↔ 飞书双向同步

**适用场景**: RITFIT 品牌部的 Obsidian 知识管理与飞书协作的双向同步

**核心功能**:
1. 📥 **飞书 → Obsidian**: 导入 Campaign Plan、Partnership 方案等文档，自动添加属性标签、清理格式、更新 FACT.md
2. 📤 **Obsidian → 飞书**: 上传复盘文档、洞察库等到飞书，供团队协作
3. 🔄 **自动更新**: 导入新项目时自动更新 FACT.md 的"当前项目状态"

---

## 🚀 快速开始

### 前置条件

1. ✅ 已安装 lark-cli（v1.0.69+）
2. ✅ 已完成飞书 OAuth 认证（`lark-cli auth login`）
3. ✅ Obsidian Vault 路径：`C:\Users\fancy\Documents\Obsidian Vault`

### 基本用法

#### 从飞书导入文档到 Obsidian

**用户指令**: "导入飞书文档 [URL]"

**AI 执行步骤**:
1. 提取文档 ID（从 URL 中 `docx/` 后面的部分）
2. 使用 lark-cli 拉取文档内容
3. 根据文档类型确定文件名和存放路径
4. 添加 YAML frontmatter（type, status, tags, updated, source, feishu_url）
5. 清理飞书格式（`<title>`, `<cite>`, `<callout>`）
6. 自动更新 FACT.md 的"当前项目状态"
7. 记录到 JOURNAL.jsonl

**示例**:
```
用户: "导入飞书文档 https://ritfitsports.feishu.cn/docx/Neixdzou5ouN60xr07ucvPr2nDg"
AI: [自动执行上述 7 个步骤]
```

#### 从 Obsidian 上传文档到飞书

**用户指令**: "上传 [文档名] 到飞书"

**AI 执行步骤**:
1. 切换到 Obsidian Vault 目录
2. 使用 lark-cli 上传文档
3. 返回飞书文档链接
4. 记录到 JOURNAL.jsonl

**示例**:
```
用户: "上传 2026 World Cup Campaign Recap 到飞书"
AI: [自动执行上述 4 个步骤]
```

---

## 📥 飞书 → Obsidian 详细流程

### Step 1: 提取文档 ID

从飞书 URL 中提取文档 ID：
```
URL: https://ritfitsports.feishu.cn/docx/Neixdzou5ouN60xr07ucvPr2nDg
文档 ID: Neixdzou5ouN60xr07ucvPr2nDg
```

### Step 2: 拉取文档内容

```bash
cd "C:\Users\fancy\Documents\Obsidian Vault"
lark-cli docs +fetch \
  --doc "文档ID" \
  --doc-format markdown \
  --format json \
  --jq '.data.document.content' \
  | sed 's/^"//;s/"$//' | sed 's/\\n/\n/g' \
  > "临时文件.md"
```

### Step 3: 确定文件名和存放路径

根据文档标题和内容，确定合适的文件名和存放路径：

| 文档类型 | 文件名格式 | 存放路径 |
|---------|-----------|---------|
| Campaign Plan | `Campaign - YYYY [活动名称].md` | `01-Projects 项目/` |
| Partnership 方案 | `Partnership - [合作方] × RITFIT.md` | `01-Projects 项目/` |
| 其他文档 | 根据内容确定 | 根据内容确定 |

**示例**:
- 标题包含 "Campaign Plan" → `Campaign - 2026 Member Month Plan.md`
- 标题包含 "Partnership" 或 "×" → `Partnership - BCRF × RITFIT.md`

### Step 4: 添加 YAML frontmatter

在文档开头添加属性标签：

```yaml
---
type: project
status: [planning|in-progress|active|completed|on-hold]
tags: [campaign|partnership, 活动标识|合作方标识, 核心机制, 涉及领域...]
updated: YYYY-MM-DD
source: "飞书文档/文档标题"
feishu_url: "飞书文档链接"
---
```

**标签选择规则**:

**Campaign Plan**:
- 必须: `campaign`, `[活动标识]`（如 `world-cup`, `member-month`）
- 可选: `21-day-challenge`, `app-launch`, `giveaway`, `kol`, `paid-media`, `pr`, `ugc`, `community`

**Partnership 方案**:
- 必须: `partnership`, `[合作方标识]`（如 `bcrf`）
- 可选: `pink-series`, `cause-marketing`, `pr`, `social-media`, `community`

**状态判断**:
- 如果文档中有"合同期"且当前日期在合同期内 → `active`
- 如果文档中有"Campaign Window"且当前日期在活动期内 → `in-progress`
- 如果文档中有"Campaign Window"且当前日期在活动期前 → `planning`
- 如果文档中有"Campaign Window"且当前日期在活动期后 → `completed`
- 其他情况 → `active`

### Step 5: 清理飞书格式

删除或转换以下飞书特有格式：

1. **删除 `<title>` 标签**
   ```markdown
   ❌ <title>2026 Member Month Campaign Plan</title>
   ✅ # 2026 Member Month Campaign Plan
   ```

2. **转换 `<cite>` 标签为 Obsidian 双链**（可选）
   ```markdown
   ❌ <cite doc-id="xxx" file-type="docx" title="文档标题" type="doc"></cite>
   ✅ [[文档标题]]
   ```

3. **转换 `<callout>` 为 Obsidian callout**（可选）
   ```markdown
   ❌ <callout emoji="🥛">内容</callout>
   ✅ > [!note] 🥛
   > 内容
   ```

4. **保留 `<table>` HTML 标签**（如果表格复杂）

### Step 6: 自动更新 FACT.md

**触发条件**: 导入新项目/活动/合作方案时

**更新内容**:
1. 打开 `C:\Users\fancy\AppData\Roaming\CherryStudioEnterprise\Data\Agents\Ray\memory\FACT.md`
2. 找到"当前项目状态"部分
3. 根据项目状态添加到对应分类：
   - `planning` → "下一步"
   - `in-progress` → "进行中"
   - `active` → "进行中"
   - `completed` → "刚完成"
4. 更新"最后更新"日期
5. 保存文件

**示例**:
```markdown
### 进行中
- 🔄 2026 H2 Campaign 排期同步（RF 6 个活动）
- 🔄 2026 Member Month Plan（8/1-8/31，已导入 Obsidian）
- 🔄 BCRF × RITFIT 合作（2026/7/1—2027/6/30，已签署合同，Pink Series 公益营销）⭐ 新增
```

**告知用户**:
```
✅ 已自动更新 FACT.md，添加了 [项目名称]
```

### Step 7: 记录到 JOURNAL.jsonl

使用 `mcp__agent-memory__memory` 工具的 `append` action 记录：

```json
{
  "timestamp": "YYYY-MM-DD HH:MM:SS",
  "event": "document_imported_from_feishu",
  "document_type": "campaign_plan|partnership",
  "document_name": "[文档名称]",
  "feishu_url": "[飞书链接]",
  "obsidian_path": "[Obsidian 路径]",
  "status": "[状态]",
  "tags": ["标签1", "标签2"],
  "auto_updated_fact": true
}
```

---

## 📤 Obsidian → 飞书 详细流程

### Step 1: 切换到 Obsidian Vault 目录

```bash
cd "C:\Users\fancy\Documents\Obsidian Vault"
```

### Step 2: 上传文档

```bash
lark-cli docs +create \
  --content @"相对路径/文件名.md" \
  --doc-format markdown \
  --title "文档标题"
```

**可选参数**:
- `--parent-token "文件夹token"` - 上传到指定文件夹
- `--parent-position "my_library"` - 上传到个人文档库

### Step 3: 返回飞书文档链接

上传成功后，返回的 JSON 中包含：
```json
{
  "ok": true,
  "data": {
    "document": {
      "document_id": "FtCMd5mfSo1NqnxT5EUcvRRDnAf",
      "url": "https://ritfitsports.feishu.cn/docx/FtCMd5mfSo1NqnxT5EUcvRRDnAf"
    }
  }
}
```

### Step 4: 记录到 JOURNAL.jsonl

```json
{
  "timestamp": "YYYY-MM-DD HH:MM:SS",
  "event": "document_uploaded_to_feishu",
  "document_name": "[文档名称]",
  "obsidian_path": "[Obsidian 路径]",
  "feishu_url": "[飞书链接]",
  "document_id": "[文档ID]"
}
```

---

## 🎯 常见场景

### 场景 1: 导入 Campaign Plan

**用户指令**: "导入飞书文档 https://ritfitsports.feishu.cn/docx/Neixdzou5ouN60xr07ucvPr2nDg"

**AI 执行**:
1. 提取文档 ID: `Neixdzou5ouN60xr07ucvPr2nDg`
2. 拉取文档内容
3. 识别为 Campaign Plan（标题包含 "Campaign Plan"）
4. 文件名: `Campaign - 2026 Member Month Plan.md`
5. 存放路径: `01-Projects 项目/`
6. 添加 frontmatter:
   ```yaml
   ---
   type: project
   status: in-progress
   tags: [campaign, member-month, app-launch, 21-day-challenge, kol, ugc, community]
   updated: 2026-07-24
   source: "飞书文档/2026 Member Month Campaign Plan"
   feishu_url: "https://ritfitsports.feishu.cn/docx/Neixdzou5ouN60xr07ucvPr2nDg"
   ---
   ```
7. 清理飞书格式
8. 更新 FACT.md:
   ```markdown
   ### 进行中
   - 🔄 2026 Member Month Plan（8/1-8/31，已导入 Obsidian）
   ```
9. 记录到 JOURNAL.jsonl
10. 告知用户: "✅ 已导入 Campaign - 2026 Member Month Plan.md，已自动更新 FACT.md"

---

### 场景 2: 导入 Partnership 方案

**用户指令**: "导入飞书文档 https://ritfitsports.feishu.cn/docx/MO29dWapVomhhfxnAv6c4Gr5njd"

**AI 执行**:
1. 提取文档 ID: `MO29dWapVomhhfxnAv6c4Gr5njd`
2. 拉取文档内容
3. 识别为 Partnership 方案（标题包含 "×"）
4. 文件名: `Partnership - BCRF × RITFIT.md`
5. 存放路径: `01-Projects 项目/`
6. 添加 frontmatter:
   ```yaml
   ---
   type: project
   status: active
   tags: [partnership, bcrf, pink-series, cause-marketing, pr, social-media, community]
   updated: 2026-07-24
   source: "飞书文档/RitFit × Breast Cancer Research Foundation"
   feishu_url: "https://ritfitsports.feishu.cn/docx/MO29dWapVomhhfxnAv6c4Gr5njd"
   contract_period: 2026-07-01 ~ 2027-06-30
   ---
   ```
7. 清理飞书格式
8. 更新 FACT.md:
   ```markdown
   ### 进行中
   - 🔄 BCRF × RITFIT 合作（2026/7/1—2027/6/30，已签署合同，Pink Series 公益营销）
   ```
9. 记录到 JOURNAL.jsonl
10. 告知用户: "✅ 已导入 Partnership - BCRF × RITFIT.md，已自动更新 FACT.md"

---

### 场景 3: 上传复盘文档到飞书

**用户指令**: "上传 2026 World Cup Campaign Recap 到飞书"

**AI 执行**:
1. 切换到 Obsidian Vault 目录
2. 上传文档:
   ```bash
   lark-cli docs +create \
     --content @"02-Areas 领域/活动复盘/2026 World Cup Campaign Recap.md" \
     --doc-format markdown \
     --title "2026 World Cup Campaign Recap"
   ```
3. 返回飞书链接: `https://ritfitsports.feishu.cn/docx/FtCMd5mfSo1NqnxT5EUcvRRDnAf`
4. 记录到 JOURNAL.jsonl
5. 告知用户: "✅ 已上传到飞书，链接: [URL]"

---

## ⚠️ 注意事项

### 人员信息铁律（最高优先级）

**不得擅自从文档中提取人名添加到 FACT.md**

- ❌ 不主动从飞书文档、Excel、PDF 等任何文档中提取人名
- ❌ 不主动添加"其他部门"人员
- ✅ 只有用户明确说"添加 XXX 到团队通讯录"时，才能添加
- 违反此规则 = 严重错误

### 自动更新限制

**自动更新仅限于"当前项目状态"部分**

- ✅ 可以自动更新 FACT.md 的"当前项目状态"
- ❌ 不可以自动更新 FACT.md 的"团队通讯录"
- ❌ 不可以自动更新 FACT.md 的其他部分

### 格式清理

**保留 vs 转换**:
- ✅ 保留: 复杂的 HTML 表格
- ✅ 转换: `<title>`, `<cite>`, `<callout>`
- ❌ 删除: 飞书特有的元数据标签

---

## 📚 相关资源

- **详细 SOP**: `02-Areas 领域/SOP/Obsidian ↔ 飞书双向同步工作流.md`
- **飞书导入 SOP**: `02-Areas 领域/SOP/飞书活动方案导入 SOP.md`
- **FACT.md**: `C:\Users\fancy\AppData\Roaming\CherryStudioEnterprise\Data\Agents\Ray\memory\FACT.md`
- **lark-cli 文档**: `lark-cli skills read lark-doc`

---

## 🔄 更新日志

### v1.0.0 (2026-07-24)
- ✅ 初始版本
- ✅ 支持飞书 → Obsidian 导入（自动添加属性标签、清理格式、更新 FACT.md）
- ✅ 支持 Obsidian → 飞书 上传
- ✅ 集成人员信息铁律
- ✅ 集成自动更新 FACT.md 规则

---

*Last updated: 2026-07-24 by Ray*

