remark-obsidious
v0.9.9
Published
remark-obsidious: A strict TypeScript-powered remark plugin for transforming Obsidian-flavored Markdown. Builds a file tree & lookup table while handling callouts, embeds, and internal links—perfect for static sites using raw vault files.
Downloads
29
Maintainers
Readme

🚨 Not ready for use 🚨
Let me dogfood this beast for a bit before you try to use it in anything you care about.
I anticipate that I'll be making heavy changes as I get a feel for what works and what doesn't in the near future
[!CAUTION] Seriously, do not use this! Until I ship a 1.0.0 release I reserve the right to change any thing at any time 😜
Latest build info:
- @latest build version is: 0.9.9
project goals
- provide a remark plugin which will transform MDASTs that have Obsidian flavored features into a structured format.
- provide a script which will walk an Obsidian vault and index it
- provide a vault interface which exposes the following:
- a filetree representation of the vault items
- a lookup table organized by id for the vault items
- some utility methods for working with the vault items
Tasks
remark-obsidious plugin features:
- [x]
==hilight text== - [x]
[[internal links]]with roll-over previews - [x]
[[internal link | with alias]] - [x]
[[internal link#heading-anchor]] - [x]
[[internal link#heading| alias]] - [x]
![[embed images]] - [x]
![[embedded markdown]] - [x]
![[embedded markdown#heading]] - [x]
[!callout] Title- with
[!nested_callouts] Nested Callouts
- with
obsidious vault indexing script
- [x] should be able to set an
inpath - [x] should be able to set an
outpath - [x] should be able to override the default index name
- [x] should be able to use a
.gitignorefile ask a mask - [x] should know what
image filesare supported by the vault- (avif,bmp,gif,jpeg,jpg,png,svg,webp) per https://help.obsidian.md/file-formats
- [x] should have a
versionwhich matches the npm package semantic version - [ ] should probably run under
node LTS- (I'm currently on v23 😜)
ObsidiousVault Interface
- [x]
VaultItemsshould have the following meta:filepath: (relative path from--into file)fileType:fileorfolderid: a unique ID sha hash based on the filepathlabel: the file's name recorded in the "obsidian" fashion- markdown file names are
filenameno extension - all other files are
filename.extension
- markdown file names are
mtimeMs: last time the file was modified
- [x]
VaultFileTreenodes should havechildrenarray of child nodesidvault item hashlabelthe vault item label
- [x]
VaultInterfaceshould havefilesa record of vault items organized byidfileTreethe generatedfiletreeidsByExtensiona lookup table of vault item ids by extension typeidsByLabelSluglookup table of vault item ids by sluggified vault labelsidsByWebPathlookup table of vault item ids by "webPath"simageIdsa list of all the ids where the extension was a recognized obsidian image typestatssome stats about the vault
Final items before 1.0.0
- [x] Add basic test coverage
- [ ] dogfood this in another app and tweak accordingly
- [ ] Write some documentation / Getting started guides
- [ ] fix the bugs I didn't catch during the previous two rounds
Feature creep / future ideas
- [ ] maybe include
semantic-releaseso i don't have deal with it - [ ] add github deployment strat
- [ ] add support for
symlinks - [ ] consider adding total vault filesize to stats
- [ ] consider the value of adding filesize for vaultItems vs increased index size
- [ ] MDX support?
- [ ] consider some ~~excuses~~ ideas for remark redirective usage
