Skip to content

publish-limitations

This vault should stay compatible with Obsidian Publish. Keep content within supported formats and avoid patterns that Publish does not accept.

Compatibility checklist

Reference: Obsidian Publish limitations.

URLs and identifiers

When naming publishable URLs or identifiers, prefer stable namespaces over ad-hoc slugs. A URI-style pattern keeps names globally unique and avoids semantic drift as titles change.

IPFS and content addressing

IPFS replaces slug-like identifiers with content identifiers (CIDs), which are cryptographic hashes of the content itself. Links are CIDs, and naming is treated as metadata layered on top.

IPLD note decomposition

In IPLD terms, a single note often mixes multiple conceptual layers. Prefer splitting stable meaning, mutable structure, and indexes into separate nodes linked by CIDs so that each part can evolve independently.

Structural atoms

Anything that can be reused, referenced elsewhere, or indexed globally should be a candidate for its own CID-backed object.

Front-matter fields as links

Some fields stay inline (like a current title), but structural metadata should be links.

Markdown body as a content node

The prose content should be a dedicated markdown node so metadata can change without rewriting the body. This also enables clean diffing and deduplication.

Optional conceptual anchors

Keep bullet lists in the markdown body unless the concepts recur across many notes; then elevate them into reusable concept nodes.

Example skeleton

{
  "type": "note",
  "title": "cognitive-folding",
  "schema": { "/": "bafy...fold-v1" },
  "foldType": { "/": "bafy...bounded-tree" },
  "tags": [
    { "/": "bafy...tag/cognitive" },
    { "/": "bafy...tag/adhd" }
  ],
  "body": { "/": "bafy...markdown" },
  "semanticOverlays": [
    { "/": "bafy...schemaorg-webpage" }
  ],
  "created": "2026-01-24T15:10:00Z",
  "previous": { "/": "bafy...oldversion" }
}

JSON-LD typing for notes

WebPage is common because Obsidian Publish emits web pages and schema.org is optimized for search engines. It is safe and widely indexed, but semantically underpowered for technical notes.

Better schema.org defaults

If staying inside schema.org, prefer note-shaped types.

Example:

{
  "@context": "https://schema.org",
  "@type": "DigitalDocument",
  "name": "publish-limitations",
  "about": ["obsidian publish", "ipfs", "naming"],
  "genre": "technical-spec"
}

Custom class + schema.org overlay

If you stop optimizing for search engines, declare a first-class class and use schema.org as a secondary vocabulary.

{
  "@context": {
    "@vocab": "https://example.org/fold#",
    "schema": "https://schema.org/"
  },
  "@type": "Note",
  "title": "publish-limitations",
  "noteKind": "policy",
  "system": "obsidian-publish",
  "schema:about": ["ipfs", "slugging", "naming"]
}

IPLD view

In content-addressed graphs, the JSON-LD overlay is just one lens. The structural role matters more than SEO types.

Human slug conventions

There is no single global standard for human-readable slugs, but there are common conventions driven by web and SEO practice.