Obsidian

obsidian: wikilinks [[Page]] / [[Page|alias]] ↔ org fuzzy links, emitted unescaped in Markdown, except for the alias pipe inside a table cell, written \| as Obsidian does, since a bare | would split the cell. An embed (![[image.png]]) keeps its ! unescaped in Markdown, and its size (![[image.png|300]]) is no alias: it stays as written in org. An image's size (![alt|300](image.png), ![alt|300x200](image.png)) is its #+ATTR_HTML: :width 300 :height 200 line in org, for an image alone in its paragraph outside a list (in a list, org reads no keyword on the bullet's line, and md→org keeps the item's lines together); Obsidian writes it so, over the html spelling, where the size is a width in pixels and maybe a height. Elsewhere the |300 stays in the link's description. A GFM alert is a callout, its type lower case (> [!note]), as Obsidian writes it; a fold after the marker ↔ the parameters' leading token (> [!tip]- Stretch first ↔ #+begin_tip - Stretch first). A known limit: a title starting with a lone - or + (> [!tip] - T) comes back folded. md → org reads a %%comment%% as an org comment (# comment) alone in its paragraph outside a list item or a footnote's definition, else as an html snippet (@@html:<!--comment-->@@), its lines one; and an inline footnote ^[note] as a footnote, numbered on from the page's own, its definition at the end, as Obsidian md translates them. Org → md writes them as an HTML comment and a footnote, which Obsidian reads, so they converge after one round trip. A %% outside text (a link's target, a callout's title) or in a wikilink stays as written, and a diary timestamp's <%%(…)> is org's, no comment. A Logseq query block (#+BEGIN_QUERY) is a logseq-query code block and back: Obsidian runs a query code block as its own search, which stays a source block in org (#+begin_src query).

Obsidian md

Translated within Markdown, Obsidian md translates as Vanilla md does, but for its links: [[Page|label]] (in a table [[Page\|label]]) ↔ [label]([[Page]]) outside code ([[Page]] is both's); an embed's size (![[image.png|300]]) stays, an image's (![alt|300](image.png), alone in its paragraph outside a list) becomes the #+ATTR_HTML: line above ![alt](image.png) and back, where Obsidian can spell it (a width in pixels, and a height). Obsidian md → Vanilla md or Logseq md writes a %%comment%% as an HTML comment (<!--comment-->) and an inline footnote ^[note] as a footnote, numbered on from the page's own, its definition at the end; their delimiters count outside code, math, HTML and wikilinks only, a diary timestamp's <%%( none, but what they hold may be code. The way back has nothing else to do: Obsidian reads both. Wikilinks and embeds ([[Page]], ![[image.png]]) stay in Vanilla md, which cannot resolve a note's name to its file without the vault. A known limit: Vanilla md carries a Logseq query as a query code block, Obsidian's search, so translating within Markdown leaves it so (not logseq-query), and Obsidian's own search goes to Logseq md as a query block.