Bulk Exporter

by symunona
5
4
3
2
1
Score: 57/100

Description

Category: File Management

The Bulk Exporter plugin allows Obsidian users to restructure and export their notes based on metadata. This powerful tool leverages the Dataview plugin's query language to select notes for export and organize them into a customized output structure, ideal for integration with static site generators like Jekyll or Hugo. It supports dynamic folder creation, renaming, and metadata-driven formatting for output paths. Internal links are adjusted automatically to reflect the exported structure, and referenced assets are also included. Advanced features include conditional placement, glob-based asset inclusion, and robust customization options for filenames and folder organization. The plugin is designed for users who manage extensive note collections and require streamlined export workflows.

Reviews

No reviews yet.

Stats

31
stars
6,161
downloads
0
forks
1,011
days
207
days
207
days
1
total PRs
0
open PRs
0
closed PRs
1
merged PRs
18
total issues
5
open issues
13
closed issues
16
commits

Latest Version

7 months ago

Changelog

Addressed #12 #13 #17

README file from

Github

Bulk Exporter plugin

This is a plugin for Obsidian (https://obsidian.md).

Bugs and Feature Requests

Use GitHub's issue tracker!

What it does

Output and restructure your notes based on metadata!

Simply:

mspaint

So from your random structure like this:

- root
  - projects
    - some active project
      - note 1 i want to publish [*] -> tech blog
      - another side topic that belongs here but not ready
    - another active project
      - pacal recepie to publish [*] -> recepies
      - some private note
  - areas
   - photo stream
      - collection of photos [*] -> photo blog
  - archive
    - old recepies
      - soup recepie [*] -> recepies
      - ...

Makes something like this:

- blogs (output folder anywhere on your drive)
  - recepies
    - pacal-recepie-to-publish.md
    - soup-recepie.md
    - ...
  - tech
    - note-1-i-want-to-publish.md
    - another-archived-tech-blog-entry.md
  - photo-blog
    - collection-of-photos.md
  - ...

... so that you can run your custom static site generators on a subset of your notes, like 11ty, Hugo, Jekyll...

Uses the powerful Obsidian Dataview plugin's language to find the files you want to export.

Shows the latest exported file status in the sidebar.

Why?

I use static generators (11ty) for my blogs, they are the outlets of my thoughts.

Some of the blog posts I am working on, are part of a bigger topic, and I wanted to keep them around to their respective PARA project folders (Building a Second Brain). I needed a folder-independent structure. One source of truth: wherever the file might be, independent from where it is into a structured output format.

Filter

The plugin uses a full fetched DataView query without the results type of course, as it's always a table.

Examples:

Select all the notes that contain the tech tag:

FROM #tech

Notes modified last week:

file.ctime > date(today) - dur(1 week)

Select all notes that have the publishDate metadata key:

publishDate

Select all notes that have publishDate or blog among the metadata keys:

publishDate OR blog

Output File Path and Name

It's a standard JS string literal, that gets the file metadata and some extras into it's context.

This is great for grouping your output files: you can create conditional sorting parameters, any folder structures you want.

The following is an example:

If file metadata is like this:

{
  blog: 'diary',
  publishDate: '...'
  title: 'Another day at the office',
  tags: ['running', 'some']
}

it will be extended with the following:

{
  created: {
    // moment style object with keys:
    YYYY: '2023',
    MM: '05',
    ...
    date: '2023-05-14',
    time: '17-54'
  },
  modified { ... } // date like above

  fileName: 'Another Day At The Office'

  // if there is a slug property set, uses that, if there is not, falls back to the normalized
  // version of the title property, if again not present, falls back to the normalized version of the file name.
  slug: 'another-day-at-the-office'

  d: function (dateLikeParam){
    // Use it like this: ${d(someDateMetaData).date} // will return the date value parsed and reformatted.
   }
   norm: function(string){
    // Will remove any special characters from the string and replaces spaces and separators with dash (-) so it's url safe.
   }
}
Examples

Want separate folders for different blogs?

${blog}/${created.date}-${slug}

Want to group different years into different folders?

${blog}/${created.YYYY}/${created.MM}-${created.DD}-${slug}

Want to keep the original filename and just dump everything in a flat structure?

${fileName}

Convert any field to a date:

${d(date_published).date}

Use a custom metadata field as formatted date in the output name:

${blog}/${d(date_published).date}-${slug}

Conditions and ternary operators

For conditional placement of a file, you can use ternary operators

The following will put all values that have a same blogname/post/some-entry meta value into the same folder, except if the file has an index key, then it will go to blogname/indexslug:

${blog}/${index?'':'posts/'}${slug}

If a document references images from your vault, it will be exported into an assets folder, relative to the markdown file! If obsidian shows it, it will be copied.

- assets/
   - attachment1.jpg
   - image.webp
   - pic.gif
- markdown.md <- referenced in the content or even in metadata!

Also, the plugin parses the internal links that point to other notes. If the referenced obsidian file is exported in the process, the links will be re-pointed to the appropriate output file name.

If the link is to a non-exported note, it is removed (the text is left in).

Magic Metadata Key copy

If you want other files to be exported with your markdown, just add a copy metadata parameter. It eats any glob formatted regular expression you give it, using relative paths compared to where your markdown file is.

Manually installing the plugin

  • Copy over main.js, styles.css, manifest.json to your vault VaultFolder/.obsidian/plugins/obsidian-bulk-exporter/.
  • Or just simlink it with ln -s /path/to/your/dev/folder/ /path/to/your/vault/.obsidian/plugins/obsidian-bulk-exporter/

Development

  1. Check out the code base anywhere (or directly into your .obsidian/plugins/ folder)
  2. You can link that folder into your vault's .obsidian/plugins/obsidian-bulk-export folder
  3. run pnpm run dev.
  4. recommended the hot-reload plugin for dev (this way when you modify anything it'll get auto re-loaded within Obsidian)

Bugs and Feature requests

Open an Issue on github, or add a PR!

Thanks

Obsidian people

Marcus Olson for the Dataview plugin and the developer docs!

Till Friebe for the Diff Tool code

jspaint.app - for the marketing image.

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.
Dataview
5 years ago by Michael Brenan
A data index and query language over Markdown files, for https://obsidian.md/.
Meta Bind Plugin
4 years ago by Moritz Jung
A plugin for Obsidian to make your notes interactive with inline input fields, metadata displays, and buttons.
Metadata Menu
4 years ago by mdelobelle
For data management enthusiasts : type and manage the metadata of your notes.
Supercharged Links
5 years ago by mdelobelle
obsidian plugin to add attributes and context menu options to internal links
Pretty Properties
7 months ago by Anareaty
Custom File Explorer sorting
4 years ago by SebastianMC
Take full control over the order and sorting of folders and notes in File Explorer in Obsidian
Heatmap Calendar
4 years ago by Richard Slettevoll
An Obsidian plugin for displaying data in a calendar similar to the github activity calendar
MetaEdit
5 years ago by Christian B. B. Houmann
MetaEdit for Obsidian
Charts View
5 years ago by caronchen
Data visualization solution in Obsidian, support plots and graphs.
Auto Card Link
4 years ago by Nekoshita Yuki
Update time on edit
5 years ago by beaussan
April's Automatic Timelines
3 years ago by April Gras
Simple timeline generator plugin for story tellers using obsidian
Media DB Plugin
4 years ago by Moritz Jung
A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your vault.
Smart ChatGPT
a year ago by 🌴 Brian
Metadata Extractor
5 years ago by kometenstaub
Obsidian Plugin that provides metadata export for use with third-party apps.
DataCards
a year ago by Sophokles187
Obsidian Plugin that transforms dataview tables into visually appealing and customizable card layouts.
Table to CSV Exporter
4 years ago by Stefan Wolfrum
An Obsidian Plugin that allows to export tables from a pane in reading mode to CSV files.
Page Gallery
3 years ago by Nathan Clark
Generates a gallery based on selected page contents.
Link Tree
3 years ago by Joshua Tazman Reinier
A sidebar foldable list of Obsidian link hierarchies.
Frontmatter Markdown Links
a year ago by mnaoumov
Obsidian Plugin that adds support for markdown links in frontmatter
Simple Note Review
4 years ago by dartungar
Simple, customizable plugin for easy note review, resurfacing & repetition in Obsidian.md.
Binary File Manager
4 years ago by qawatake
An Obsidian plugin to manage binary files
Dataview Serializer
2 years ago by Sébastien Dubois
Obsidian plugin that gives you the power of Dataview, but generates Markdown, making it compatible with Obsidian Publish, and making the links appear on the Graph.
Better Inline Fields
4 years ago by David Sarman
Obsidian plugin to enhance Dataview style inline fields
Habit Calendar
3 years ago by Hedonihilist
Monthly Habit Calendar for DataviewJS. This plugin helps you render a calendar inside DataviewJS code block, showing your habit status within a month.
Dataview Publisher
2 years ago by UD
Output markdown from your Dataview queries and keep them up to date. You can also be able to publish them.
AI Tagger Universe
a year ago by Hu Nie
An intelligent Obsidian plugin that leverages AI to automatically analyze note content and suggest relevant tags, supporting both local and cloud-based LLM services.
Release Timeline
4 years ago by cakechaser
NetClip
a year ago by Elhary
this plugin is for Obsidian that allows you to browse the web and clip webpages directly into your vault.
Habit Tracker
4 years ago by David Moeller
A Plugin to display a Habit Tracker in Obsidian.
Dataview (to) Properties
10 months ago by Mara-Li
Sync inline Dataview to properties (YAML frontmatter)
Tasks Map
7 months ago by NicoKNL
A graph view of your tasks.
Slash snippets
10 months ago by echo-saurav
Insert snippet of text with slash command
Query all the things
3 years ago by Sytone
Query all your data stored in Obsidian, this plugin allows SQL based queries against the data collections available in Obsidian and Dataview. Output can then be rendered by Handlebars
Auto Tag
3 years ago by Control Alt
Easily generate relevant tags for your Obsidian notes.
moviegrabber
3 years ago by Leon Holtmeier
obsidian.md plugin to grab data from public movie Databases and make them into a note that can be used with dataview querries
Media Companion
a year ago by Nick de Bruin
Double Colon Conceal
3 years ago by Michal Srch
Obsidian plugin to display double colon (i.e. Dataview inline fields) as a single colon for more natural reading experience.
Notes dater
3 years ago by Paul Treanor
Adds created_on and updated_on dates of the active note to status bar
Virtual Footer
a year ago by Signynt
Display markdown text (including dataview queries or Obsidian bases) at the bottom or top of all notes which match a specified rule, without modifying them.
Time Things
2 years ago by Nick Winters
Show clock, track time spent editing a note, and track the last time a note has been edited.
Metadata Auto Classifier
2 years ago by Beomsu Koh
AI-powered Obsidian plugin that automatically classifies and generates metadata (tags, frontmatter) for your notes.
Content Cards
a year ago by leo
Insert content cards in Markdown, such as timeline, highlightblock, target card, book information card, music information card, movie information card, photoes ablum, business card, content subfield, countdown, SWOT,BCG.
Fold Properties By Default
a year ago by Tommy Bergeron
Always have editor/metadata properties folded by default.
Linked Data Vocabularies
3 years ago by kometenstaub
Add linked data to the YAML of your Obsidian notes.
Kanban Status Updater
a year ago by Ankit Kapur
Obsidian plugin that automatically updates the note property when card is moved to a column.
View Count
2 years ago by Trey Wallis
Add view count tracking to your Obsidian vault
Note aliases
3 years ago by Pulsovi
This plugin manages wikilinks aliases and save them on the aliases list of the linked note
Metadata Icon
2 years ago by Benature
change metadata entry icon
Meld Build
3 years ago by meld-cp
Write and execute (sandboxed) JavaScript to render templates, query DataView and create dynamic notes.
Additional Icons
2 years ago by Matthew Turk
Add additional iconsets to Obsidian
Frontmatter generator
3 years ago by Hananoshika Yomaru
A plugin for Obsidian that generates frontmatter for notes
File Title Updater
a year ago by wenlzhang
An Obsidian plugin that synchronizes titles between filename, frontmatter, and first heading in your notes.
Symbol linking
10 months ago by Evan Bonsignori ; Mara-Li
Adds ability to link with any trigger in Obsidian. Each trigger can limit linking to specific folders or file.
HackerOne
3 years ago by neolex
A plugin to get our hackerone reports data into obsidian
Run
2 years ago by Hananoshika Yomaru
Generate markdown from dataview query and javascript.
Copy Metadata
3 years ago by wenlzhang
An Obsidian plugin to copy metadata to clipboard and insert it into file name.
Feeds
2 years ago by LukeMT, pashashocky, madx
Magic feeds dataview query for obsidian
File Index
2 years ago by Steffo
Obsidian plugin to create a metadata file about the files present in the Vault
Reason
2 years ago by Joshua Pham
Digest your Obsidian notes
Update Time
2 years ago by Sébastien Dubois
Obsidian plugin that updates front matter to include creation and last update times
Tier List
a year ago by Mox Alehin
Obsidian plugin for visual ranking and organizing content into customizable Tier Lists.
Dataview Autocompletion
a year ago by Daniel Bauer
KoReader Highlight Importer
a year ago by Tahsin Kocaman
Imports highlights and metadata from KoReader into Obsidian notes
Conditional Properties
4 months ago by Diego Eis
Automate frontmatter property updates in your Obsidian notes using simple conditional rules.
Tag Tactician
a year ago by Scott Tomaszewski
Note UID Generator
a year ago by Valentin Pelletier
Allow you to automatically generate UID for the notes in your vault.
CSV All-in-One
a year ago by hihangeol
LLM Tagger
a year ago by David Jayatillake
Image Metadata
2 years ago by alexeiskachykhin
Adds image metadata editing capabilities to Obsidian
GitHub Integration
a year ago by Kirill Zhuravlev
Plugin that fetch your github stars into notes
Tagvis
a year ago by Mason Bryant
Note Codes
8 months ago by Ezhik
Reference your Obsidian notes from anywhere with simple 4-character codes.
Virus Total Enrichment
2 years ago by ytisf
An Obsidian plugin to enrich a note with VirusTotal API.
Paste Image Into Property
a year ago by Nito
Sentinel
a year ago by Giorgos Sarigiannidis
A plugin for Obsidian that allows you to update properties or run commands based on document visibility changes.
Every Day Calendar
a year ago by QuBe
Obsidian plugin to create calendars inspired by Simone Giertz's Every Day Calendar
Boardgame Search
a year ago by Marlon May
A plugin to create notes for boardgames based on the BGG API
TikToker
2 months ago by ameyxd
Save TikTok videos as markdown notes with embedded content and metadata extraction.
Note Favicon
a year ago by mdklab
Obsidian plugin – Show Favicon from Metadata
MOC Link Helper
2 years ago by Bogdan Codreanu
This obsidian plugins allows you to quickly see which notes you need to include in your MOC.
ExMemo Assistant
a year ago by ExMemo AI
Using LLMs to manage files and generating metadata such as tags and summaries.
Current File Tags
a year ago by Trung Tran
Book Clipper
5 months ago by Hossein Fardmohammadi
Save book details from websites into your notes
Simple File Info
a year ago by Lukas Capkovic
My Thesaurus
a year ago by Mara-Li
A plugin that auto tags file based on contents and a csv file or a Markdown table (inspired by https://github.com/pmartinolli/MyThesaurus)
Papers
8 months ago by William Liang
An obsidian plugin to retrieve and import research papers.
Watched-Metadata
2 years ago by Nail Ahmed
Watches for changes in metadata and updates the note content accordingly.
Log Keeper
a year ago by James Sonneveld
Generates times stamps automatically as changes are made to a note.
Another Name
a year ago by Jiyuan Wang
Add a subheading to your note in Obsidian
Onto Tracker
2 years ago by Jacob Hart
Plugin for obsidian allowing project management with ontologies.
Discrete
9 months ago by shkarlsson
Frontmatter Metadata Link Classes
10 months ago by Varvara Zmeeva / zmeeva.io
Enhanced internal links with automatic classnames based on frontmatter metadata.
Pug Templates
2 years ago by Nicholas Wilcox
An Obsidian plugin that enables the usage of Pug templates.
Move Cursor On Startup
8 months ago by Jared Kelnhofer
Obsidian plugin to move the cursor to the right and back to the left when starting up. Why? To keep DataView expressions from not running on the first load of, say, your Home file.
Frontmatter to HTML Attributes
2 months ago by Tarek Saier
Makes YAML frontmatter available as data-* attributes in HTML, enabling metadata based CSS styling.