1. Sitemap
Where to put it and which Content-Type
Upload the file to your site root so it answers at /llms.txt, and serve it with Content-Type: text/plain; charset=utf-8. Without the charset, non-English titles can be garbled; a single-page app that answers every path with its HTML shell will serve that shell instead of the file.
Cloudflare Pages or Workers static assets: _headers in the output folder
/llms.txt
Content-Type: text/plain; charset=utf-8
Netlify: _headers in the publish folder
/llms.txt
Content-Type: text/plain; charset=utf-8
nginx: inside the server block
location = /llms.txt {
types { text/plain txt; }
charset utf-8;
}
Vercel: vercel.json at the project root
{
"headers": [
{
"source": "/llms.txt",
"headers": [
{
"key": "Content-Type",
"value": "text/plain; charset=utf-8"
}
]
}
]
}
After deploying, run the AI search check on your homepage to confirm it is read as text.