← Back to list

writing-to-logseq
by aiskillstore
Security-audited skills for Claude, Codex & Claude Code. One-click install, quality verified.
⭐ 102🍴 3📅 Jan 23, 2026
SKILL.md
name: writing-to-logseq version: 1.0.0 description: > Expert in writing data to Logseq DB graphs via HTTP API. Auto-invokes when users want to create pages, add blocks, update content, set properties, or sync conversation notes to their Logseq graph. Provides CRUD operations with safety guidelines. allowed-tools: Read, Bash, Grep, Glob
Writing to Logseq
When to Use This Skill
This skill auto-invokes when:
- User wants to create new pages or blocks in Logseq
- Updating existing content in the graph
- Setting or modifying properties on entities
- Adding tags/classes to blocks
- Syncing conversation notes to Logseq
- User mentions "add to logseq", "create page", "update block"
Write Operations: See {baseDir}/scripts/write-operations.py for the API.
Available Operations
| Operation | Description |
|---|---|
create_page(title, content) | Create new page |
create_block(parent, content) | Add block under parent |
update_block(uuid, content) | Modify block content |
delete_block(uuid) | Remove block |
set_property(uuid, key, value) | Set property value |
add_tag(uuid, tag) | Add tag/class to block |
append_to_page(title, content) | Add content to existing page |
Quick Examples
Create a Page
from write_operations import LogseqWriter
writer = LogseqWriter()
# Create simple page
page = writer.create_page("Meeting Notes 2024-01-15")
# Create page with initial content
page = writer.create_page(
"Project Alpha",
content="Project overview and tasks",
properties={"status": "Active", "priority": "High"}
)
Add Blocks
# Add block to a page
block = writer.create_block(
parent="page-uuid-or-title",
content="New task item"
)
# Add nested block
child = writer.create_block(
parent=block["uuid"],
content="Sub-task details"
)
Update Content
# Update block content
writer.update_block(
uuid="block-uuid",
content="Updated content here"
)
# Append to existing page
writer.append_to_page(
title="Daily Notes",
content="- New item added via API"
)
Set Properties
# Set single property
writer.set_property(
uuid="block-uuid",
key="status",
value="Complete"
)
# Set typed property
writer.set_property(
uuid="block-uuid",
key="rating",
value=5,
type="number"
)
# Set multiple properties
writer.set_properties(
uuid="block-uuid",
properties={
"author": "John Doe",
"rating": 5,
"published": "2024-01-15"
}
)
Add Tags
# Add tag to block
writer.add_tag(uuid="block-uuid", tag="Book")
# Add multiple tags
writer.add_tags(uuid="block-uuid", tags=["Important", "Review"])
HTTP API Methods
Create Page
{
"method": "logseq.Editor.createPage",
"args": ["PageTitle", {"property": "value"}, {"createFirstBlock": true}]
}
Insert Block
{
"method": "logseq.Editor.insertBlock",
"args": ["parent-uuid", "Block content", {"sibling": false}]
}
Update Block
{
"method": "logseq.Editor.updateBlock",
"args": ["block-uuid", "New content"]
}
Set Property
{
"method": "logseq.Editor.upsertBlockProperty",
"args": ["block-uuid", "property-name", "value"]
}
Delete Block
{
"method": "logseq.Editor.removeBlock",
"args": ["block-uuid"]
}
Safety Guidelines
Best Practices
- Verify before delete - Always confirm block exists before removal
- Use unique titles - Avoid creating duplicate pages
- Validate properties - Ensure property types match schema
- Handle errors - Catch and handle API failures gracefully
Common Pitfalls
- Duplicate pages: Check if page exists before creating
- Invalid UUIDs: Verify UUID format before operations
- Property types: Number properties need numeric values
- Rate limiting: Don't spam API with rapid requests
Content Formatting
Markdown Support
# Logseq supports markdown in blocks
writer.create_block(
parent=page_uuid,
content="""
## Section Header
- Bullet point
- Another point
- Nested item
**Bold** and *italic* work too.
[[Link to Page]] and #tags
"""
)
Property Syntax
# Properties can be set in content
writer.create_block(
parent=page_uuid,
content="""
- Task item
status:: In Progress
priority:: High
due:: [[2024-01-20]]
"""
)
# Or via API (preferred for typed values)
writer.set_property(uuid, "rating", 5) # number
writer.set_property(uuid, "done", True) # checkbox
Sync Conversation to Logseq
Pattern for Saving Notes
def sync_conversation_to_logseq(title, notes):
"""Sync conversation notes to Logseq page."""
writer = LogseqWriter()
# Create or get page
page = writer.get_or_create_page(f"Claude Notes/{title}")
# Add timestamp header
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
Error Handling
try:
page = writer.create_page("My Page")
except writer.ConnectionError:
print("Cannot connect to Logseq")
except writer.DuplicateError:
print("Page already exists")
except writer.ValidationError as e:
print(f"Invalid data: {e}")
Reference Materials
- See
{baseDir}/references/write-operations.mdfor all operations - See
{baseDir}/references/safety-guidelines.mdfor safety practices - See
{baseDir}/templates/page-template.mdfor page templates
Score
Total Score
60/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
✓人気
GitHub Stars 100以上
+5
✓最近の活動
1ヶ月以内に更新
+10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
✓タグ
1つ以上のタグが設定されている
+5
Reviews
💬
Reviews coming soon
