create.brillyance

How to publish

Drop in a self-contained HTML page, get an instant shareable URL. Publish, update in place, remove, and optionally make it search-discoverable — the same API the now-defunct PageDrop used, self-hosted.

All commands run the bundled publish.py. Writes need BRILLYANCE_PUBLISH_TOKEN exported in your shell; reads are public.

Publish a page

python3 publish.py --file report.html

Returns a siteId, a public url (/s/<id>), an embedUrl (/embed/<id>, frame-friendly), and a delete token. Save the delete token — it's the only way to update or remove the page later.

Options

FlagWhat it does
--slug nameMemorable URL, e.g. /s/quarterly-report. 3–64 chars, lowercase, hyphens.
--password secretVisitors must enter a password before the page renders.
--ttl 7dAuto-expire. 1h365d, once (deleted after first view), or omit for permanent.
--discoverableMake it search-indexable and list it in the sitemap (see below). Pair with --title / --description.
python3 publish.py --file report.html --slug q3-report --password board2026 --ttl 30d

Make it discoverable (SEO)

Pages are unlisted by default — anyone with the link can view them, but they're noindex and absent from the sitemap. Opt a page into search with --discoverable:

python3 publish.py --file report.html --slug q3-report --discoverable \
  --title "Q3 Revenue" --description "Quarterly revenue results."

Discoverable pages send index, follow, get a <link rel="canonical"> plus Open Graph / Twitter tags injected into the <head> (additive — your own <title>/<meta> are untouched), and are listed in /sitemap.xml. /robots.txt points crawlers there; the /embed view always stays noindex and canonicalises back to /s.

Update in place (same URL)

Replace the content without changing the link — anyone who already has the URL sees the new version.

python3 publish.py --update SITE_ID --token DELETE_TOKEN --file report-v2.html

Omit --file for a metadata-only update — change settings without re-uploading the HTML. For example, toggle discoverability on an existing page:

python3 publish.py --update SITE_ID --token DELETE_TOKEN --discoverable     # list it
python3 publish.py --update SITE_ID --token DELETE_TOKEN --no-discoverable  # unlist it

Remove a page

python3 publish.py --delete SITE_ID --token DELETE_TOKEN

The URL becomes a permanent 410 Gone. Deletion is irreversible.

Inspect a page

python3 publish.py --info SITE_ID

Public metadata only — slug, TTL, view count, whether it's password-protected, whether it's discoverable. Never the HTML.

Limits: 4 MB HTML per page (under Vercel's request-body cap). HTML must be self-contained — inline CSS/JS, CDN links OK. Custom slugs are first-come-first-served. Don't combine --discoverable with --password or a short --ttl — gated or expiring pages shouldn't be indexed.