Obsidian Bases
Contents
InkStone can publish Obsidian .base files as filtered, sorted HTML tables. A Base is a YAML file that describes a database view over your vault notes — InkStone evaluates the filters and renders the result as a <table> inside a regular post page.
Publishing a base
The recommended way to publish a base is the filename marker: rename the file so it ends with __website before the .base extension.
All Posts__website.base
The page title is everything before __website — in this case "All Posts". The base is served at the same URL an .md file in the same folder would produce.
Obsidian Bases does not support arbitrary YAML keys — a website: true field in the .base YAML may be stripped when Obsidian re-saves the file. The filename marker survives re-saves.
Featuring on listing pages
Add __featured to the filename to pin the base in the Featured section of the parent listing:
All Posts__website__featured.base
The suffixes can appear in either order.
Legacy: website: true YAML field
Adding website: true to the .base YAML still works as a fallback:
website: true
title: All Posts
Use the filename marker for new bases — the YAML field is there for backwards compatibility.
Base YAML structure
A .base file is a YAML document. InkStone reads the following top-level fields:
| Field | Purpose |
|---|---|
title |
Page title (overrides filename-derived title) |
slug |
URL slug (auto-derived from title if omitted) |
date |
Publication date (YYYY-MM-DD) |
summary |
Shown on listing cards |
tags |
Content tags |
featured |
Alternative to __featured in filename |
author |
Shown in post meta |
banner |
Hero image URL |
banner_x / banner_y |
Focal point for the banner (percentage, 0–100) |
type |
View type — currently only table is rendered |
filters |
Array of filter conditions (see below) |
columns |
Column definitions — field (required), name (display label) |
sort |
Sort field |
sortOrder |
"asc" or "desc" |
limit |
Maximum number of rows |
Filters
Filters are evaluated against the dataview_index (one record per published .md note). Each filter is an object with a type field.
file.hasTag()
Matches notes that have the given tag.
filters:
- type: file.hasTag
tag: python
file.tags.contains()
Same as file.hasTag() — alternate syntax accepted by InkStone.
filters:
- type: file.tags.contains
value: "python"
file.inFolder()
Matches notes whose vault path starts with the given folder prefix.
filters:
- type: file.inFolder
folder: blog
Property comparison
Compares a frontmatter field against a value. Supported operators: =, !=, <, <=, >, >=.
filters:
- type: property
field: status
operator: "="
value: published
and / or / not
Combine or negate filters:
filters:
- type: and
filters:
- type: file.hasTag
tag: python
- type: file.inFolder
folder: blog
filters:
- type: not
filter:
type: property
field: draft
operator: "="
value: true
Example
A base that lists all published blog posts tagged python, sorted by date descending, showing title and date columns:
title: Python Posts
date: 2026-04-30
type: table
filters:
- type: and
filters:
- type: file.inFolder
folder: blog
- type: file.hasTag
tag: python
columns:
- field: title
name: Title
- field: date
name: Date
sort: date
sortOrder: desc
limit: 20
Save this as Python Posts__website.base in your vault to publish it at /python-posts.
See also
- Dataview —
TABLE/LISTqueries in fenced code blocks - Post Types — other special page types
- Publishing and Privacy —
website: trueand private notes
InkStone