back to home

blacksmithgu / obsidian-dataview

A data index and query language over Markdown files, for https://obsidian.md/.

8,622 stars
504 forks
652 issues
TypeScriptShellCSS

AI Architecture Analysis

This repository is indexed by RepoMind. By analyzing blacksmithgu/obsidian-dataview in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.

Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.

Source files are only loaded when you start an analysis to optimize performance.

Embed this Badge

Showcase RepoMind's analysis directly in your repository's README.

[![Analyzed by RepoMind](https://img.shields.io/badge/Analyzed%20by-RepoMind-4F46E5?style=for-the-badge)](https://repomind.in/repo/blacksmithgu/obsidian-dataview)
Preview:Analyzed by RepoMind

Repository Overview (README excerpt)

Crawler view

Obsidian Dataview Treat your Obsidian Vault as a database which you can query from. Provides a JavaScript API and pipeline-based query language for filtering, sorting, and extracting data from Markdown pages. See the Examples section below for some quick examples, or the full reference for all the details. Examples Show all games in the game folder, sorted by rating, with some metadata: ~~~markdown ~~~ --- List games which are MOBAs or CRPGs. ~~~markdown ~~~ --- List all markdown tasks in un-completed projects: ~~~markdown ~~~ --- Show all files in the folder that you read in 2021, grouped by genre and sorted by rating: ~~~markdown ~~~ Usage For a full description of all features, instructions, and examples, see the reference. For a more brief outline, let us examine the two major aspects of Dataview: *data* and *querying*. **Data** Dataview generates *data* from your vault by pulling information from **Markdown frontmatter** and **Inline fields**. • Markdown frontmatter is arbitrary YAML enclosed by at the top of a markdown document which can store metadata about that document. • Inline fields are a Dataview feature which allow you to write metadata directly inline in your markdown document via syntax. Examples of both are shown below: **Querying** Once you've annotated documents and the like with metadata, you can then query it using any of Dataview's four query modes: • **Dataview Query Language (DQL)**: A pipeline-based, vaguely SQL-looking expression language which can support basic use cases. See the documentation for details. ~~~markdown ~~~ • **Inline Expressions**: DQL expressions which you can embed directly inside markdown and which will be evaluated in preview mode. See the documentation for allowable queries. • **DataviewJS**: A high-powered JavaScript API which gives full access to the Dataview index and some convenient rendering utilities. Highly recommended if you know JavaScript, since this is far more powerful than the query language. Check the documentation for more details. ~~~markdown ~~~ • **Inline JS Expressions**: The JavaScript equivalent to inline expressions, which allow you to execute arbitrary JS inline: ~~~markdown This page was last modified at . ~~~ JavaScript Queries: Security Note JavaScript queries are very powerful, but they run at the same level of access as any other Obsidian plugin. This means they can potentially rewrite, create, or delete files, as well as make network calls. You should generally write JavaScript queries yourself or use scripts that you understand or that come from reputable sources. Regular Dataview queries are sandboxed and cannot make negative changes to your vault (in exchange for being much more limited). Contributing Contributions via bug reports, bug fixes, documentation, and general improvements are always welcome. For more major feature work, make an issue about the feature idea / reach out to me so we can judge feasibility and how best to implement it. Local Development The codebase is written in TypeScript and uses / for compilation; for a first time set up, all you should need to do is pull, install, and build: This will install libraries, build dataview, and deploy it to , which you can then open in Obsidian. This will also put in watch mode, so any changes to the code will be re-compiled and the test vault will automatically reload itself. Preparing for creating pull requests If you plan on doing pull request, we would also recommend to do the following in advance of creating the pull request: The third step of is only needed if the format check reports some issue. Installing to Other Vaults If you want to dogfood dataview in your real vault, you can build and install manually. Dataview is predominantly a read-only store, so this should be safe, but watch out if you are adjusting functionality that performs file edits! Building Documentation We use for documentation (found in ). You'll need to have python and pip to run it locally: This will start a local web server rendering the documentation in , which will live-reload on change. Documentation changes are automatically pushed to once they are merged to the main branch. Using Dataview Types In Your Own Plugin Dataview publishes TypeScript typings for all of its APIs onto NPM (as ). For instructions on how to set up development using Dataview, see setup instructions. Support Have you found the Dataview plugin helpful, and want to support it? I accept donations which go towards future development efforts. I generally do not accept payment for bug bounties/feature requests, as financial incentives add stress/expectations which I want to avoid for a hobby project! Support @blacksmithgu: Support @holroy: