写入LogseqSkill writing-to-logseq

此技能专门用于通过 HTTP API 将数据写入 Logseq 数据库图,支持创建页面、添加块、更新内容、设置属性和同步对话笔记等操作,是提升个人知识管理效率的利器。

低代码开发 0 次安装 0 次浏览 更新于 3/3/2026

写入 Logseq

何时使用此技能

此技能在以下情况下自动触发:

  • 用户想要在 Logseq 中创建新的页面或块
  • 在图形中更新现有内容
  • 在实体上设置或修改属性
  • 给块添加标签/类
  • 将对话笔记同步到 Logseq
  • 用户提到“添加到 Logseq”、“创建页面”、“更新块”

写入操作:查看 {baseDir}/scripts/write-operations.py 了解 API。

可用操作

操作 描述
create_page(title, content) 创建新页面
create_block(parent, content) 在父级下添加块
update_block(uuid, content) 修改块内容
delete_block(uuid) 移除块
set_property(uuid, key, value) 设置属性值
add_tag(uuid, tag) 给块添加标签/类
append_to_page(title, content) 给现有页面添加内容

快速示例

创建页面

from write_operations import LogseqWriter

writer = LogseqWriter()

# 创建简单页面
page = writer.create_page("会议笔记 2024-01-15")

# 创建带有初始内容的页面
page = writer.create_page(
    "项目 Alpha",
    content="项目概览和任务",
    properties={"状态": "活跃", "优先级": "高"}
)

添加块

# 给页面添加块
block = writer.create_block(
    parent="页面-uuid-或-标题",
    content="新任务项"
)

# 添加嵌套块
child = writer.create_block(
    parent=block["uuid"],
    content="子任务细节"
)

更新内容

# 更新块内容
writer.update_block(
    uuid="块-uuid",
    content="更新后的内容在这里"
)

# 追加到现有页面
writer.append_to_page(
    title="每日笔记",
    content="- 通过 API 添加的新项"
)

设置属性

# 设置单个属性
writer.set_property(
    uuid="块-uuid",
    key="状态",
    value="完成"
)

# 设置类型化属性
writer.set_property(
    uuid="块-uuid",
    key="评分",
    value=5,
    type="数字"
)

# 设置多个属性
writer.set_properties(
    uuid="块-uuid",
    properties={
        "作者": "John Doe",
        "评分": 5,
        "发布": "2024-01-15"
    }
)

添加标签

# 给块添加标签
writer.add_tag(uuid="块-uuid", tag="书籍")

# 添加多个标签
writer.add_tags(uuid="块-uuid", tags=["重要", "回顾"])

HTTP API 方法

创建页面

{
  "method": "logseq.Editor.createPage",
  "args": ["页面标题", {"属性": "值"}, {"createFirstBlock": true}]
}

插入块

{
  "method": "logseq.Editor.insertBlock",
  "args": ["父级-uuid", "块内容", {"sibling": false}]
}

更新块

{
  "method": "logseq.Editor.updateBlock",
  "args": ["块-uuid", "新内容"]
}

设置属性

{
  "method": "logseq.Editor.upsertBlockProperty",
  "args": ["块-uuid", "属性名", "值"]
}

删除块

{
  "method": "logseq.Editor.removeBlock",
  "args": ["块-uuid"]
}

安全指南

最佳实践

  1. 删除前验证 - 在移除前始终确认块存在
  2. 使用唯一标题 - 避免创建重复页面
  3. 验证属性 - 确保属性类型与模式匹配
  4. 处理错误 - 优雅地捕获和处理 API 故障

常见陷阱

  • 重复页面:在创建前检查页面是否存在
  • 无效 UUID:在操作前验证 UUID 格式
  • 属性类型:数字属性需要数值
  • 速率限制:不要频繁请求 API

内容格式化

Markdown 支持

# Logseq 支持块中的 markdown
writer.create_block(
    parent=page_uuid,
    content="""
## 节标题

- 项目点
- 另一个点
  - 嵌套项

**粗体** 和 *斜体* 也可以。

[[链接到页面]] 和 #标签
"""
)

属性语法

# 可以在内容中设置属性
writer.create_block(
    parent=page_uuid,
    content="""
- 任务项
  状态:: 进行中
  优先级:: 高
  截止:: [[2024-01-20]]
"""
)

# 或者通过 API(推荐用于类型化值)
writer.set_property(uuid, "评分", 5)  # 数字
writer.set_property(uuid, "完成", True)  # 复选框

将对话同步到 Logseq

保存笔记的模式

def sync_conversation_to_logseq(title, notes):
    """将对话笔记同步到 Logseq 页面。"""
    writer = LogseqWriter()

    # 创建或获取页面
    page = writer.get_or_create_page(f"Claude Notes/{title}")

    # 添加时间戳标题
    from datetime import datetime
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M")

    writer.append_to_page(
        title=f"Claude Notes/{title}",
        content=f"""
## {timestamp}

{notes}

---
"""
    )

    return page

错误处理

try:
    page = writer.create_page("我的页面")
except writer.ConnectionError:
    print("无法连接到 Logseq")
except writer.DuplicateError:
    print("页面已存在")
except writer.ValidationError as e:
    print(f"无效数据:{e}")

参考材料

  • 查看 {baseDir}/references/write-operations.md 了解所有操作
  • 查看 {baseDir}/references/safety-guidelines.md 了解安全实践
  • 查看 {baseDir}/templates/page-template.md 了解页面模板