move_block
Move existing blocks in SiYuan to reorder them or change parent-child relationships. Specify previous_id for ordering or parent_id for nesting, preserving related content by moving block groups.
Instructions
移动块(previous_id / parent_id 至少提供一个)。
适用场景: - 调整块顺序(基于 previous_id 锚点)。 - 调整父子归属(基于 parent_id)。 - 调整分节或层级结构时,保持相关内容整体移动。
使用方法: - previous_id: 把 block_id 移动到 previous_id 之后。 - parent_id: 把 block_id 移动到 parent_id 之下。 - allow_heading_only_move: 兼容旧参数,已废弃;传 true 会报错。
注意事项: - 若 block_id 是标题块(h1-h6),将按“分节范围”移动: 从该标题开始,直到下一个同级或更高级标题(level <= 当前 level)之前的所有块一起移动。 - 其他块默认按“子树块组”移动:目标块 + 全部后代,避免父块与子块脱离。 - 思源 API 对同传 previous_id 和 parent_id 时会优先 previous_id。 - previous_id / parent_id 不能指向正在移动的子树内部块。
与 insert_block 的区别: - insert_block 是插入一个新块。 - move_block 是移动已有块的位置。
安全建议(重要): - 不做“单块父节点移动”,统一执行整组移动,避免父块与内容脱离。 - 若目标是“稳定挂到某个父块”,优先提供 parent_id。
示例(假设现有结构:父块A -> 子块B -> 子块C -> 子块D): # 调整顺序:移动 C 到 B 之后(不改变层级) move_block(block_id="block_c", previous_id="block_b") # 结果:A -> B -> C -> D(顺序不变,因为 C 原本就在 B 之后)
# 调整层级:移动 C 成为 B 的子块
move_block(block_id="block_c", parent_id="block_b")
# 结果:A -> B -> C(现在 C 是 B 的子块)-> D
# 同时调整顺序和层级
move_block(block_id="block_c", previous_id="block_b", parent_id="block_a")
# 注意:API 会优先处理 previous_id,parent_id 可能被忽略
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| block_id | Yes | ||
| parent_id | No | ||
| previous_id | No | ||
| allow_heading_only_move | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |