文件内容
references/content-reorganize.md
# 场景:内容重组
使用 MoveBlocks 调整文档结构,将块移动到新位置。
## 移动块 API
```
MCP Tool: lexiang.block_move_blocks
Arguments: {
"entry_id": "<entry_id>",
"block_ids": ["block_1", "block_2", "block_3"],
"parent_block_id": "<目标父块 ID>",
"after": "<插入位置,某块之后,可选>"
}
```
**限制**: 单次最多移动 20 个块
---
## 参数说明
| 参数 | 说明 |
|------|------|
| `entry_id` | 文档 entry_id |
| `block_ids` | 要移动的块 ID 数组,按顺序移动 |
| `parent_block_id` | 目标父节点块 ID |
| `after` | 插入到此块之后,为空则插入到开头 |
---
## 使用场景
### 将分散内容整合到同一章节
```
MCP Tool: lexiang.block_move_blocks
Arguments: {
"entry_id": "doc123",
"block_ids": ["para_1", "para_2", "list_1"],
"parent_block_id": "section_h2",
"after": "intro_callout"
}
```
### 调整段落顺序
```
MCP Tool: lexiang.block_move_blocks
Arguments: {
"entry_id": "doc123",
"block_ids": ["para_3"],
"parent_block_id": "root_block",
"after": "para_1"
}
```
---
## 使用辅助工具
```typescript
import { ContentReorganizer } from './scripts/block-helper';
const reorganizer = new ContentReorganizer()
.move(['para_1', 'para_2'], 'section_h2', 'intro_callout')
.move(['list_1', 'list_2'], 'section_h2');
const mcpCalls = reorganizer.toMCPCalls(entryId);
// 返回多个 MCP 调用
```
---
## 注意事项
1. **所有块只能移动到同一个目标父节点**
2. **目标父节点不能是叶子节点类型**,包括:
- h1, h2, h3, h4, h5(标题块)
- code(代码块)
- image(图片块)
- attachment(附件块)
- video(视频块)
- divider(分割线)
- mermaid、plantuml(图表块)
3. 移动操作会保持块的子孙结构
4. 建议移动前先获取文档结构确认 block_id
---
## 获取文档结构
```
MCP Tool: lexiang.block_list_block_children
Arguments: {
"entry_id": "<entry_id>",
"with_descendants": true
}
```
返回完整的块树结构,包含所有 block_id。