NookDocs assumes you'll hand pages off to LLMs — to summarise, extend, translate, or regenerate. That handoff needs the source, not the rendered HTML. We expose the source at a stable /path.md URL on every page, plus a one-click clipboard affordance in the UI.
The .md URL convention
Append .md to any docs page URL and the server returns the raw MDX source with Content-Type: text/markdown.
# Rendered HTML
https://docs.acme.com/quickstart
# Raw MDX source (same content, different format)
https://docs.acme.com/quickstart.mdWorks on any tenant, any custom domain, any path depth:
https://docs.acme.com/api/authentication.md
https://docs.acme.com/configuration/theme.md
https://docs.acme.com/.md # root pageTry it on this page: /optimize/markdown-export.md.
What you get back
Exact MDX source from your repo — frontmatter included, components intact, no HTML escaping. Example (abridged):
---
title: Markdown export
description: Every docs page is also available as raw MDX...
icon: file-down
---
NookDocs assumes you'll hand pages off to LLMs...
<ParamField path="...">
...
</ParamField>Headers:
Content-Type: text/markdown; charset=utf-8Cache-Control: public, max-age=300, s-maxage=300, stale-while-revalidate=3600
No authentication required for public pages. Pages hidden via hidden: true frontmatter return a 404 at the .md URL too.
Use cases
Paste into any LLM
Reader: "summarise this for me"
→ paste /my-page.md contents
→ LLM understands the component set + body + frontmatterScript-assisted content operations
# Pull a page, run a diff, open an issue when it drifts from your style guide
curl -sL https://docs.acme.com/quickstart.md | ./lint-style.py# Export every page as MDX for a one-off migration
curl -sL https://docs.acme.com/sitemap.xml | \
xmllint --xpath "//*[local-name()='loc']/text()" - | \
xargs -I{} curl -sL "{}.md" -o "./export/$(basename {}).md"Claude Projects / ChatGPT Custom GPTs
Most LLM providers accept a docs-site URL and will fetch /llms.txt + per-page .md URLs automatically. See llms.txt for the index file format.
Copy from the UI
Every docs page also ships a Copy page split button in the top-end corner of the page header. The primary click copies the raw Markdown to your clipboard; the chevron opens the contextual menu with deep-links to ChatGPT / Claude / Perplexity / Cursor / Windsurf / VS Code / MCP clients.
Click Copy page
Plain MDX source, no decoration. Same content as the .md URL returns.
Click Copy as Markdown for LLMs
Same source prefixed with a component-reference header so the LLM knows the NookDocs component library without fine-tuning.
Click Open in ChatGPT / Claude / Perplexity
Deep-links the provider with the page content pre-loaded as context.
The "Markdown for LLMs" variant wraps the source with an auto-generated component spec (see copy for LLMs for the exact header format).
Limitations
No
Accept: text/markdowncontent negotiation yet. Mintlify lets you send anAccept: text/markdownheader to the HTML URL and get Markdown back; NookDocs only exposes the.mdsuffix for now. The.mdURL always works.No HTTP
Link/X-Llms-Txtdiscovery headers yet. Clients that auto-discover Markdown variants from response headers won't find them. Direct URL access works.No
Cmd+C→ full-page-as-Markdown keyboard shortcut. The Copy button is the only UI affordance right now; keyboard shortcut is on the roadmap.Binary assets excluded. Images and PDFs return a 404 at
.md. Only MDX source pages respond.
Related
llms.txt — sitemap-style index of every page's
.mdURLContextual menu — Copy-page dropdown + custom items (ChatGPT / Claude / Cursor deep-links)
Copy for LLMs — the UI variant with component-spec header
SEO — sitemap.xml + robots.txt + canonical URLs