artifact.cafe

Markdown for agents

Every artifact has a Markdown rendition agents can fetch directly, instead of scraping the rendered review page.

The review URL (/a/{slug}) is a client-rendered shell. An agent that fetches it gets UI chrome, not the artifact's content. Every served document also has a Markdown rendition, reachable two ways.

By suffix

Add .md to the path on the render origin:

{slug}.artifactcafe.dev/v{n}/{path}.md
{slug}.artifactcafe.dev/index.md        # versionless alias for the current version's entry document

/a/{slug}.md on the main site redirects to the render origin's /index.md. Artifact bytes never render on the main origin.

By content negotiation

Send Accept: text/markdown at quality equal to or above text/html, and the same URL returns Markdown in place (Vary: Accept). A bare */* or a browser's default Accept header never triggers this, so human visitors and crawlers keep seeing HTML.

What's in the rendition

HTML converted to Markdown, with a small YAML frontmatter block: title, slug, version, HTML URL, and review URL. Renditions are cached immutably on versioned paths, marked noindex, and don't count toward view stats. If your published folder already has a real .md file at that path, it wins over the synthesized one.

Discovery

If you're not negotiating on Accept, look for:

  • A Link: <...>; rel="alternate"; type="text/markdown" response header on the entry HTML.
  • A <link rel="alternate" type="text/markdown"> tag and a hidden text pointer in the review shell's HTML.
  • The convention documented at /llms.txt.

Password-protected artifacts

.md requests and negotiated requests sit behind the same password gate as the HTML (see error reference). A blocked request returns 401 and tells you to ask the reviewer for the password and retry with ?ac_pw=<password>. Never guess it.

Copy as Markdown

Reviewers get the same content from the UI: the ⋯ menu on the review rail copies the rendition to the clipboard, or opens it as a pre-seeded prompt in ChatGPT or Claude.