Skip to content
✨ Publier v1 is live — a polished docs platform built for the open web.
On this page

AI features

Generate a discovery index, portable rendered Markdown, and full-text context; understand the limits of the AI UI and planned services.

Publier can publish machine-readable content from a static build. These files help tools read your documentation; they do not provide an AI answer service.

Available now

AskAi component

A floating chat panel that toggles with Cmd/Ctrl + /. Drop it on any page:

import { AskAi } from '@publier/shell/qwik';
<AskAi client:load />

The panel is a placeholder UI with open and close controls. It does not expose a submit event or backend adapter. See the AskAi component reference for its current limits.

llms.txt

Enable llms.enabled: true in publier.config.yaml to generate a machine-readable index of your site at build time:

publier.config.yaml
llms:
enabled: true

This emits /llms.txt — your pages’ titles, URLs and descriptions, grouped by URL path, following the llms.txt convention. Documentation tools and assistants that support this convention can use the index to discover pages. Support depends on the consumer; the file does not guarantee indexing or citations.

Google Search, including its generative AI features, does not use llms.txt. Keep your HTML crawlable, publish useful content, and provide canonical URLs and a sitemap. A page must be indexed and eligible for a search snippet to appear in Google’s generative AI features.

The index is built from the pages that actually shipped. Groups use the first URL path segment: /docs/start belongs to docs, /pricing to pricing, and the homepage is listed under pages. Leave collections unset to include the whole site. Error routes and pages marked noindex are excluded. If you author your own public/llms.txt, Publier leaves it alone.

Set site.description to supply the > summary beneath the site title. To include only the homepage and documentation, set llms.collections: [pages, docs]; other top-level paths need their own group.

Markdown and full-text exports

With shell 4.7.0 or later, enable both settings:

publier.config.yaml
llms:
enabled: true
full: true

Run your production build. This generates portable Markdown from prerendered HTML, plus /llms-full.txt containing the eligible page bodies with titles and source URLs. Per-page destinations are:

HTML pageMarkdown output
//index.md
/docs/start or /docs/start//docs/start.md
/blog/release/blog/release.md

The same llms.collections filter applies. Error routes, titleless pages, meta-refresh redirects, and pages marked noindex or none in their robots metadata are excluded. Exports need a rendered main or article content area. The bundle orders pages by URL. llms.txt continues linking to HTML pages.

Code fences, tables, links, images, rendered snippets, inactive tab panels, and closed accordion content are converted from the built HTML. Navigation, forms, buttons, scripts, and other UI controls are removed. Links and media use the first base[href] when it resolves to HTTP(S); invalid or unsupported bases fall back to the original page URL. Without site.url, local URLs become root-relative unless an external HTTP(S) base supplies their origin.

To omit a rendered subtree, add data-publier-markdown-exclude to its element. data-pagefind-ignore and data-mdast="ignore" also exclude subtrees from these exports. These are publication controls, not reader access controls: the original HTML remains retrievable.

Existing authored public/llms.txt, .md files, and public/llms-full.txt are preserved independently. The generated full bundle still derives from HTML, so an authored per-page Markdown file may differ from its bundle section. Ambiguous generated destinations, such as / and /index both targeting index.md, fail the build. Use a clean output directory when rebuilding so stale generated exports cannot remain.

This is a rendered-content export. It does not archive MDX imports, frontmatter, component source, or original formatting. Client-fetched content and request-time SSR routes are unavailable to the static pass. HTML changes made by later build hooks are not reflected in the exports. Math and custom widgets may lose presentation. Inspect representative output before feeding it to a tool.

Omit full or set it to false for the index alone. Setting enabled: false disables framework generation of all three output types. Exports are build artifacts; the development server does not generate them. Publish them with HTML, assets, and search from the same build.

OpenInAI

A per-page dropdown that lets readers open the current doc in ChatGPT, Claude, Perplexity, or Google AI Studio. See OpenInAI.

On the roadmap

  • Generated MCP server — the build does not emit an MCP service.
  • Semantic search — sentence-embedding model in the browser for hybrid keyword + meaning queries.
  • AI doc assistant — quantized LLM running in-browser via WebGPU, RAG-grounded on your content.
  • Smart features — related docs via embedding similarity, “did you mean?” on failed queries, auto-generated summaries.