Unlisted and encrypted pages
What this demonstrates
This page contrasts two mechanisms that are easy to confuse:
- Unlisted is an indexing policy. The unlisted demo has a normal public HTML route, but the unlisted transformer removes it from search, graph, explorer, RSS, sitemap and Bases views. Anyone who knows the URL can still fetch it.
- Encrypted is a content transform. The encrypted demo
has a
passwordfrontmatter field, so the transformer replaces its rendered body with an AES-256-GCM ciphertext container. The browser’s Web Crypto code decrypts it only after a password is supplied.
Neither is a substitute for authentication. Unlisted hides discoverability; encryption protects the body against casual readers but leaves public ciphertext and an offline attack surface.
Configuration used
- source: "@quartz-community/unlisted-pages"
enabled: true
options: {}
order: 45
- source: "@quartz-community/encrypted-pages"
enabled: true
options:
iterations: 600000
passwordField: password
unlistWhenEncrypted: false
outputPath: static/encryptedContentIndex.json
order: 900
layout:
position: afterBody
priority: 1The encrypted component has no default layout position in its manifest, so the explicit
layout entry is important: it loads its CSS and afterDOMLoaded decrypt/unlock script into
the final page resource collection. CrawlLinks remains at order 60, before encryption, so
links from encrypted source can populate the shadow index before their body is replaced.
Content used
# unlisted-demo.md
unlisted: true
# encrypted-demo.md
password: sandbox-demoThe demo password is published on purpose and protects no real secret.
What the rendered output proves
The unlisted page has its own emitted route but no entry in content-index-derived discovery
files. The encrypted page’s static HTML contains an empty
<div class="encrypted-page popover-hint" data-encrypted="..." data-iterations="600000">;
its plaintext marker is absent from the source HTML. The unlock form is injected by the
component’s browser script, so a Chrome run with JavaScript enabled also finds the password
field and can reveal the body with sandbox-demo.
The emitted static/encryptedContentIndex.json is a separate shadow index for revealable
encrypted pages. It contains ciphertext only, and a stealth: true page would be omitted from
that index entirely.
safe_for_shared_engine
false — unlisted pages change every discovery surface, while encryption adds PBKDF2 work, client-side decryption and a shadow index. Both are useful, but adopting them across 51 wikis requires an explicit threat model and privacy review.