# Logseq Import

> Import notes from Logseq pages into the slipbox. Use when the user pastes a Logseq page with properties and bulleted notes.

- Skill: `jrswab/logseq-import` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jrswab/logseq-import`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jrswab/logseq-import/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jrswab (https://skillmd.com/u/jrswab)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jrswab/logseq-import

---


# 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

1. **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.
2. **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).
3. **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
4. **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:**
1. "Rewriting ideas helps decide their importance"
2. "Fleeting Notes: quick notes written anywhere"
3. "Fleeting Notes can be captured on paper or digitally" (nested, parent context added)
4. "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

