| name | logseq-import |
| description | Import notes from Logseq pages into the slipbox. Use when the user pastes a Logseq page with properties and bulleted notes. |
Logseq Import
Parse a Logseq page and create individual slipbox entries for each bullet point. Slipbot generates its own tags; import only note content and source metadata.
Input Format
Logseq pages have two parts:
1. Page Properties (top of page, key:: value format):
type:: #literature
source:: Book
author:: David Kadavy
title:: Digital Zettelkasten
alias:: zettelkasten-book
status::
tags::
2. Bulleted Notes (markdown list):
- First note content here
- Second note with [[page ref]] link
- Nested bullet under second
- Third note id:: abc123-uuid
Property Mapping
| Logseq Property | Slipbox Field |
|---|
title:: | source.title |
source:: | source.type (if plain text like "Book") |
source:: [text](url) | source.title + source.url (if markdown link) |
author:: | source.author |
type:: #literature | Note type hint (maps to note) |
alias:: | Ignore |
status:: | Ignore |
tags:: | Ignore (slipbot generates its own tags) |
Empty properties (e.g., author:: with no value) → null
Extraction mechanics: collect all key:: value lines at the top; stop at the first bullet (- ); strip # from values like #literature; parse markdown links [text](url) into both parts.
Bullet Parsing
Each top-level bullet (- ) becomes its own slipbox note. Nested bullets become standalone notes enriched with context from all ancestors.
Strip from each bullet before importing:
id:: uuid → remove
block-tags:: #xxx → remove entirely
#tag inline tags → remove entirely (slipbot generates its own)
#{"{" or malformed tags → remove
Nesting: a nested bullet's content includes context from all of its ancestors, recursively at any depth.
- Parent:
- [[Fleeting Notes]]: quick notes written anywhere
- Child:
- Can be on paper or digital
- Result: "Fleeting Notes (quick notes written anywhere) can be on paper or digital"
Refs: convert [[page refs]] → plain text (potential link targets); keep all refs if multiple appear in one bullet. Preserve markdown formatting (bold, italic, code).
Workflow
- Parse the page → extract page properties into source metadata; extract all bullets into a note list, handling nesting by enriching each child with ancestor context. Done when every top-level bullet and every nested bullet is accounted for as a standalone note.
- Precheck → generate a 1–2 sentence summary of the page (from title, author, content themes); present summary, note count, and source info to user; ask for confirmation. Done when user confirms (or aborts — create no notes).
- On confirmation → for each note, invoke slipbot:
- Use
- {content} prefix (note type)
- Include source:
~ {source.type}, {source.title} by {source.author}
- Let slipbot handle: filename, tags, links, graph update
- Report → count of notes created, any issues encountered. Done when the reported count matches the extracted note count.
Example
Input:
type:: #literature
source:: Book
author:: David Kadavy
title:: Digital Zettelkasten
- Rewriting ideas helps decide their importance
- [[Fleeting Notes]]: quick notes written anywhere
- Can be captured on paper or digitally
- Keywords should be specific to the idea id:: abc123
Source: Book, Digital Zettelkasten by David Kadavy
Extracted notes:
- "Rewriting ideas helps decide their importance"
- "Fleeting Notes: quick notes written anywhere"
- "Fleeting Notes can be captured on paper or digitally" (nested, parent context added)
- "Keywords should be specific to the idea" (id stripped)
One slipbot call:
- Rewriting ideas helps decide their importance ~ Book, Digital Zettelkasten by David Kadavy
Edge Cases
- No properties: Treat as standalone notes without source
- No user notes (no bullets): Report "no notes to import"
- Citation sections (
## Citation:): Ignore (redundant with properties)
- Non-bullet content: Ignore headers, paragraphs outside bullets