Search, RSS and sitemap

What this demonstrates

This page exercises two sides of the content index:

  • search mounts an interactive full-text search component. FlexSearch indexes titles, content and tags in the browser, and the configured preview mode shows a result excerpt.
  • content-index emits machine-readable files at build time: static/contentIndex.json, sitemap.xml, and index.xml (the RSS feed). All are derived from the same published content set, so unlisted pages do not leak into discovery metadata.

Configuration used

  - source: "@quartz-community/search"
    enabled: true
    options:
      enablePreview: true
      fieldPriority:
        - title
        - content
        - tags
    order: 50
    layout:
      position: left
      priority: 20
      group: toolbar
      groupOptions:
        grow: true
 
  - source: "@quartz-community/content-index"
    enabled: true
    options:
      enableSiteMap: true
      enableRSS: true
      rssLimit: 20
      rssFullHtml: false
      rssSlug: index
      includeEmptyFiles: true
    order: 50

rssLimit: 20 is deliberately larger than the default 10 because this showcase is a catalogue: the feed should include every current experiment without emitting full HTML.

Content used

Search terms with useful signal:
 
- `isolation` appears on the home page and the canvas page.
- `KaTeX` appears on the math page.
- `sandbox-reading-stats` appears on the local-plugin page.
- `data-callout` appears on the callout page.

Rendered result

Use the search button in the left toolbar to search for KaTeX, isolation, or sandbox-reading-stats. The result preview is drawn from the generated index, not from a second endpoint.

The unlisted demo is a useful negative control: its direct route exists, but its content must not appear in search results, contentIndex.json, sitemap.xml, or RSS. The encrypted demo is similarly represented only through the encrypted-page mechanism, not as plaintext content.

What the rendered output proves

The page DOM contains .search, a .search-button, .search-container, and an input with class="search-bar" and name="search"; its .search-layout carries data-preview="true" and the configured data-field-priority JSON. The build output also contains static/contentIndex.json, sitemap.xml, and index.xml, each with non-empty published entries. The content-index emitter is the proof for the files; the DOM marker is the proof that the browser search surface is mounted.

safe_for_shared_engine

true — search and content-index are existing opt-in components/emitters with explicit size controls; a wiki can adopt them independently and the published-page set is already the engine’s normal source of truth.