writing-to-logseq

When to Use This Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "writing-to-logseq" with this command: npx skills add c0ntr0lledcha0s/claude-code-plugin-automations/c0ntr0lledcha0s-claude-code-plugin-automations-writing-to-logseq

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.md for all operations

  • See {baseDir}/references/safety-guidelines.md for safety practices

  • See {baseDir}/templates/page-template.md for page templates

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

investigating-codebases

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

writing-docs

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

reading-logseq-data

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

managing-docs

No summary provided by upstream source.

Repository SourceNeeds Review