- Obsidian uses some custom markdown syntax
- https://help.obsidian.md/Editing+and+formatting/Obsidian+Flavored+Markdown
- plugins like Tasks and Dataview add even more syntax, plus different query blocks
- Logseq also uses a weird interpretation of markdown/org-mode specialized in outlining
- https://docs.logseq.com/#/page/markdown
- it has a custom syntax for tasks, properties, aliases, admonitions, etc.
- Here Obsidian assumes usage of the Tasks plugin
- https://help.obsidian.md/Editing+and+formatting/Basic+formatting+syntax#Task+lists
- https://publish.obsidian.md/tasks is the de-facto standard plugin for task management in Obsidian
- Any global global filter suffix (like
#task
) is omitted and should be removed for conversion. - Tasks plugin has many more optional states, but they don't map onto Logseq anyway
- Logseq doesn't understand
[ ]
syntax at all, so unlike in Obsidian/Tasks, there is no confusion between simple checkboxes and todo-tasks- https://docs.logseq.com/#/page/tasks
- Task management in Logseq is built-in and more intentional
Obsidian | Logseq |
---|---|
- [ ] |
- TODO or - LATER |
- [/] |
- DOING or - NOW |
- [x] |
- DONE |
- [-] |
- CANCELLED |
Note
Only [ ]
and [x]
are standard (common?) Markdown, other symbols are the default set from the Tasks plugin that map well on the built-in Logseq statuses
- Obsidian Tasks: this is used to filer and treat only a subset of checkboxes as tasks
- https://publish.obsidian.md/tasks/Getting+Started/Global+Filter
- It should be configurable in the converter
- The keyword for the filter
- If it's set, it will be removed, otherwise it will be ignored
- Example:
- [ ] #task do something
with#task
tag as the filter keyword,- this should become:
- TODO do something
Note
For now I will focus only on the emoji-style dates (Dataview-style is similar to Logseq properties, but I don't use it anyway)
- Obsidian Tasks: https://publish.obsidian.md/tasks/Getting+Started/Dates
- Dates appear at the end of the task description as an emoji + a date
- Logseq: https://docs.logseq.com/#/page/tasks/block/deadline%20and%20scheduled
- Deadline/scheduled date is added on a separate line in the block
- These are not properties, just strings that get some special rendering
Date | Obsidian | Logseq |
---|---|---|
Due/Deadline | 📅 YYYY-MM-DD |
DEADLINE: <YYYY-MM-DD ddd> |
Scheduled | ⏳ YYYY-MM-DD |
SCHEDULED: <YYYY-MM-DD ddd> |
Start | 🛫 YYYY-MM-DD |
N/A |
Created | ➕ YYYY-MM-DD |
N/A (optionally: add created:: [[YYYY-MM-DD]] property) |
Done | ✅ YYYY-MM-DD |
N/A |
Cancelled | ❌ YYYY-MM-DD |
N/A |
- Logseq has a time tracking feature: https://docs.logseq.com/#/page/tasks/block/time%20tracker
- it records the dates of task state transitions in a "logbook"
- this roughly corresponds to the task Start and Done dates from the Obsidian Tasks plugin
- Obsidian Tasks: https://publish.obsidian.md/tasks/Getting+Started/Recurring+Tasks
- Logseq: https://docs.logseq.com/#/page/6667036b-efe4-4c29-9dc7-52e3d1233838
[!missing] Out of scope
Because Tasks plugin uses natural language dates, automatic conversion would be complicated
- Obsidian Tasks: https://publish.obsidian.md/tasks/Getting+Started/Priority
- Has 5 explicit levels
- Logseq: https://docs.logseq.com/#/page/tasks/block/priorities
- Only has 3 explicit levels: A, B, C
Priority | Obsidian Tasks | Logseq |
---|---|---|
highest | 🔺 | [#A] |
high | ⏫ | [#A] |
medium | 🔼 | [#B] |
normal (implicit) | ||
low | 🔽 | [#C] |
lowest | ⏬️ | [#C] |
[!todo]
This mapping could be made configurable
- Obsidian Tasks: https://publish.obsidian.md/tasks/Getting+Started/Task+Dependencies
- Tasks can have an ID and other tasks can reference that ID
- Example:
- [ ] do this first 🆔 abcdef
(identifiable)- [ ] do this after first ⛔ abcdef
(depends on the above)
- Logseq: not supported
- But it could be done via block references
[!missing] Out of scope
Although doable, it's not a priority, so for now we can ignore dependencies
- Obsidian uses a more common wiki-style syntax for aliases:
[[wiki link|alias]]
- Logseq uses a core-markdown style treating
[[...]]
as a URL:[alias]([[wiki link]])
- https://docs.logseq.com/#/page/aliases%20and%20external%20links
- it does the same with block references
((…))
- Obsidian uses a YAML block at the beginning of the file
---
aliases: ["buh", "bar"]
tags:
- foo
- meh
___
text
- Logseq uses custom properties format in the first block of the page (unindented)
aliases:: buh, bar
tags:: foo, meh
- text
- Obsidian: (standard markdown)
> some
> text
- Logseq: (org-mode based)
#+BEGIN_QUOTE
some
text
#+END_QUOTE
Note
Logseq supports standard markdown block quotes (but not callouts!), so the conversion is not strictly required
- Obsidian uses basic block quote syntax + a callout type
> [!tip]
> some useful
> tip note
- Logseq uses org-mode based syntax for blocks
Type
<
to kick off autocompletion and list of advanced commands.
When a command is selected it expands to aBEGIN…END
section inside a block. There can be multipleBEGIN…END
sections in a block.
#+BEGIN_TIP
some useful
tip note
#+END_TIP
- note
- abstract (summary, tldr)
- info
- todo
- tip (hint, important)
- success (check, done)
- question (help, faq)
- warning (caution, attention)
- failure (fail, missing)
- danger (error)
- bug
- example
- quote (cite)
With a potential mapping to Obsidian types:
- ℹ️
NOTE
: note/info/summary/tldr/abstract, default? - 💡
TIP
: tip/hint/help/question/faq - ❗
IMPORTANT
: important/attention/ - 🔥
CAUTION
: caution/todo - ⚠ ️
WARNING
: warning/error/danger/bug/fail/failure/missing - 📌
PINNED
: pinned/done/check/success EXAMPLE
: example (code block?)QUOTE
: quote/cite (+ standard block quote)- special blocks:
VERSE
: for poetry? looks like a quoteCOMMENT
: for hidden comments (see below)CENTER
: actually centers the text!
Visible while editing, hidden in the preview mode.
-
Obsidian:
%% comment text %%
(can be inline) -
Logseq: only block-comments (but can be in the middle of a block)
#+BEGIN_COMMENT comment text #+END_COMMENT
- Obsidian:
![[page name]]
- https://help.obsidian.md/Linking+notes+and+files/Embed+files
- similar to the
![]()
inline image syntax
- Logseq:
{{embed [[page name]]}}
- https://docs.logseq.com/#/page/page%20embed
- works same for block embeds
- different ways to embed media
[!TODO]
embedding blocks:![[page#^reference_id]]
vs.{{embed ((block reference))}}
- Obsidian:
![](https://www.youtube.com/watch?v=video_id)
- standard markdown syntax
- Logseq:
{{video https://www.youtube.com/watch?v=video_id}}
- Obsidian: same wiki-style links as for any other files in the vault (consistency!)
![[file.pdf]]
(path doesn't matter) - Logseq: relative links to the asset file
![](../assets/file.pdf)
- Obsidian:
Text with ==a highlight== in the middle
- Logseq:
Text with ^^a highlight^^ in the middle
Note
Apparently, despite the documentation, Logseq also supports markdown syntax
- Obsidian: standard markdown syntax
- https://help.obsidian.md/Editing+and+formatting/Basic+formatting+syntax#Lists
- Note that the numbers don't matter for the rendering, so it's common to use
1.
for each item to be able to reorder items easily.
1. one
2. two
3. three
and a half
- Logseq: numbered lists are the same as other bullet lists (i.e. generic blocks), but with a special hidden property:
logseq.order-list-type:: number
- https://docs.logseq.com/#/page/numbered%20list
- there is also a community plugin for this: https://github.com/sethyuan/logseq-plugin-ol/blob/master/README.en.md
- Logseq figures out the numbering automatically (nice), but the internal syntax is just bizarre:
- one
logseq.order-list-type:: number
- two
logseq.order-list-type:: number
- three
logseq.order-list-type:: number
and a half