SlipBot Logseq Importer
by @jrswab
Import notes from Logseq pages into the slipbox. Use when user pastes a Logseq page with properties and bulleted notes. Parses page-level properties, extracts each bullet as an individual note, handles nested bullets by adding parent context, then runs slipbot for each.
clawhub install slipbot-logseq-importerπ About This Skill
name: logseq-import description: Import notes from Logseq pages into the slipbox. Use when user pastes a Logseq page with properties and bulleted notes. Parses page-level properties, extracts each bullet as an individual note, handles nested bullets by adding parent context, then runs slipbot for each.
Logseq Import
Parse a Logseq page and create individual slipbox entries for each bullet point.
Critical Rule: Ignore All Tags
Do not import any tags from Logseq. This includes:
tags:: property#tags in bullet contentblock-tags:: metadataSlipbot generates its own tags based on content. Logseq tags would conflict with this.
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 | 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 better tags) |
Empty properties (e.g., author:: with no value) β null
Parsing Rules
Properties
1. Extract allkey:: value lines at the top
2. Stop when hitting first bullet (- )
3. Strip # from values like #literature
4. Parse markdown links: text β extract both partsBullets
1. Each top-level bullet (- ) becomes its own slipbox note
2. Nested bullets: Add parent context to make them standalone
- Example parent: - [[Fleeting Notes]]: quick notes written anywhere
- Example child: - Can be on paper or digital
- Result: "Fleeting Notes (quick notes written anywhere) can be on paper or digital"
3. Strip Logseq metadata from bullets:
- id:: uuid β remove
- block-tags:: #xxx β remove entirely
- #tag inline tags β remove entirely (slipbot generates its own)
- #{"{" or malformed tags β remove
4. Convert [[page refs]] β plain text (potential link targets)Content Cleanup
id:: xxx from bulletsblock-tags:: xxx entirely#tag inline tags (slipbot generates its own tags)Workflow
1. Precheck (before import) - Parse the page properties and bullets (don't create notes yet) - Generate a brief summary of what the page is about (1-2 sentences based on title, author, and content themes) - Count total notes that will be created (including nested bullets that become standalone) - Present to user: summary, note count, source info - Ask for confirmation before proceeding with import - If user declines, stop and don't create any notes
2. Parse the page (after confirmation) - Extract page properties β source metadata - Extract all bullets β note list - Handle nesting by enriching child bullets with parent context
3. For each bullet, invoke slipbot workflow:
- Use - {content} prefix (note type)
- Include source: ~ {source.type}, {source.title} by {source.author}
- Let slipbot handle: filename, tags, links, graph update
4. Report results - Count of notes created - Any issues encountered
Example
Input:
type:: #literature
source:: Book
author:: David Kadavy
title:: Digital ZettelkastenRewriting 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
Processing:
1. Source: Book, "Digital Zettelkasten" by David Kadavy
2. Bullets extracted:
- "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)
3. Each sent to slipbot as:
- - Rewriting ideas helps decide their importance ~ Book, Digital Zettelkasten by David Kadavy
- etc.
Edge Cases
## Citation:): Ignore (redundant with properties)[[refs]] in one bullet: Keep all, convert to plain textπ‘ Examples
Input:
type:: #literature
source:: Book
author:: David Kadavy
title:: Digital ZettelkastenRewriting 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
Processing:
1. Source: Book, "Digital Zettelkasten" by David Kadavy
2. Bullets extracted:
- "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)
3. Each sent to slipbot as:
- - Rewriting ideas helps decide their importance ~ Book, Digital Zettelkasten by David Kadavy
- etc.