CiteKit US$19 one-time
US$19 one time per site, plus applicable tax shown at checkout. Payment is handled by Paddle.

How to serve /llms.txt when your host won't let you upload a .txt file

You created llms.txt, published it, and curl https://yoursite.com/llms.txt still returns a full HTML page. That is the closed-host problem — not a bad file.

CiteKit supplies files and instructions. Installing them may require a paid plan, a custom domain, custom code or separate hosting; those costs are not included. Platform features change, so check your current plan before buying.

The symptom

A working root brief starts with an H1 in plain text:

# Your site name

> One-line summary…

On Framer, Webflow, or Carrd you often get something closer to:

<!DOCTYPE html>
<html>…marketing page…</html>

Status may still be 200. Agents that expect markdown at /llms.txt do not get a brief.

Why this happens

These builders treat almost every path as an HTML route. There is often no public directory where a raw .txt is served at the origin root. That is a product constraint, not a CiteKit claim about rankings or citations.

What has to be true

FilePublic URLVerify
llms.txthttps://yoursite.com/llms.txtfirst line is # + site name
schema.jsonldappropriate page <head> as application/ld+jsonview-source / validator of your choice
faq.mdoptional public FAQ page; keep in sync with schemasame Q&As as JSON-LD

Framer

Framer does not give you a reliable static root for arbitrary text files. Practical options:

  • Put a reverse proxy or CDN rule in front of the custom domain so /llms.txt (and optionally /faq.md) are served as plain text from object storage or a tiny worker.
  • Paste Organization + FAQPage JSON-LD in Site Settings → Custom Code → End of <head>.
  • Do not rely on “upload a page named llms.txt” — that usually still wraps HTML.

Webflow

Same class of limit: the designer publishes HTML routes. Practical options:

  • Reverse proxy / 301 / CDN rule that serves a hosted .txt at /llms.txt on the apex (or www — pick one host and stick to it).
  • Paste JSON-LD in Project Settings → Custom Code → Head Code.
  • If /llms.txt 200s but the body is your homepage, you still have the HTML-fallback failure.

Carrd

Carrd is even more constrained: there is no general root-file upload for arbitrary .txt on every plan. Say so before you buy a zip. Honest paths are (a) a proxy/CDN rule on a custom domain you control, or (b) move the marketing site to a host that can publish static files at the origin root. CiteKit’s stack README may fall back to generic install steps for Carrd — we do not invent a native upload UI that does not exist.

An option when your domain supports a proxy

Put a CDN or worker in front of the domain. Match /llms.txt (and optionally /faq.md / /schema.jsonld if you host them as files) and return the file bytes with a text content-type. Keep the builder for the HTML site; use the edge only for the brief. High level only — use your CDN’s docs for the exact rule syntax.

Common failures

  • SPA / builder HTML fallback on a “missing” path
  • Wrong hostname (www vs apex)
  • Stale CDN cache after you replace the file
  • Redirect loops between proxy and origin
  • FAQ markup placed on pages where the corresponding answers are not visible

Review generated facts and keep FAQ markup on pages where those answers are visible. A proxy must fit your host, domain and TLS setup; it is not guaranteed to be available on every plan.

Verify

curl -s https://yoursite.com/llms.txt | head
# First line must be: # Your site name

Wrong vs right: HTML doctype or nav chrome means it is not installed. A leading # H1 means the brief is fetchable.

What to put in the file

See a finished four-file example on /sample (also download the zip). Spec shape: one H1, a short blockquote, H2 sections with absolute URLs — not a sitemap dump. Spec: llmstxt.org.

You may not need CiteKit

If WordPress (Yoast, Rank Math) or a docs platform already serves a real /llms.txt, use that. CiteKit is for indie marketing sites on closed hosts that do not get one.

Not sure which gaps you have? Check your site free →